본문 바로가기

전체 글103

Spring AI MCP with IntelliJ IDEA 개요MCP를 지원하는 AI 프로그램들도 많아졌고, 대부분에 AI 기능을 제공하는 개발툴에서도 MCP를 지원하게 되어 간단하게 Spring을 사용하여 MCP 프로그램을 개발하고, InteilliJ IDEA를 사용하여 개발한 MCP를 사용하는 방법을 알아본다. Getting Started아래 예제에서는 MAC에서 Spring Native 빌드를 사용하여 MCP 서버를 빌드하고, 빌드된 바이너리를 사용하여 IntelliJ IDEA에 연동한다. 윈도에서도 동일하게 사용가능하다. MCP 관련한 예제는 지난 게시글을 확인한다.https://blog.igooo.org/172 Spring AI 스펙은 아래 블로그를 확인한다.https://spring.io/blog/2025/05/20/spring-ai-1-0-GA-re.. 2025. 5. 26.
oha - HTTP load generator (성능 테스트) 개요API 서비스를 개발하고 성능 테스트를 할 때는 주로 nGrinder를(참고 https://blog.igooo.org/138) 사용하여 성능 테스트를 진행한다. nGrinder를 사용하여 테스트를 하려면 설치도 해야 하고 스크립트도 작성해야 하는 번거로움이 있어서 간단한 성능 테스트기를 찾아보다가 가볍게 설치해서 사용할 수 있고, 다양한 OS에서 사용할 수 있는 oha라는 성능 테스트 툴이 있어서 공유한다. ohaoha는 가벼운 프로그램으로 rust로 개발되었다. Installationrust 개발환경이 구성되어 있으면 다음 링크를 참조한다. https://github.com/hatoo/oha Download pre-built binaryOS 별로 미리 빌드된 바이너리를 사용하려면 아래 링크를 참조한.. 2025. 5. 20.
MCP with Spring Boot 개요MCP : Model Context Protocol은 LLM 애플리케이션과 외부 테이터 소스 및 도구 간의 원활한 통합을 가능하게 하는 개방형 프로토콜로 최근 AI 툴에서 많은 지원을 해주면서 사람들의 관심이 많아졌다. Spring AI에서도 MCP 관련 기능을 꾸준하게 추가하고 있고, 다양한 애플리케이션에서도 MCP를 지원하고 있어서 Spring을 사용하여 MCP를 사용하는 방법에 대해서 알아보도록 하자 MCP관련 내용은 아래 링크를 참조한다.MCP : https://github.com/modelcontextprotocol)Spring AI / Model Context Protocol : https://docs.spring.io/spring-ai/reference/api/mcp/mcp-overvie.. 2025. 4. 4.
JDK 24 새로운 기능 개요2025/03/18 JDK 24 GA 버전이 출시되었고, 이번 버전에 새롭게 추가된 기능에 대하여 간단히 알아본다. Features488: Primitive Types in Patterns, instanceof and swith (Second Preview)Java 24에서는 instanceof 연산자와 switch 표현식 및 명령문과 같은 모든 패턴 콘텍스트에서 기본 유형을(primitive types) 포함하도록 패턴 매칭을 확장한다. 이번 업데이트를 통해 객체(object) 및 기본 유형(primitive types) 모두에서 작업할 때 더 간결하고 읽기 쉬운 코드를 사용할 수 있다. instanceof 연산자와 switch 표현식 및 명령문은 모든 기본 유형에서 작동하도록 확장된다.Exampl.. 2025. 3. 30.
JAVA 24 Flexible Constructor Bodies 개요2025/03/18 JDK 24 GA 버전이(https://jdk.java.net/24/) 출시되었다. JDK 24 추가된 기능들에 대해서는 다음 포스팅에서 알아보고, 이번 포스트에서는 여러 추가된 기능 중 Flexible Constructor Bodies에 대하여 알아본다.Flexible Constructor Bodies 기능은 Java 프로그래밍 언어에서 생성자(constructor) 내에서 명시적 생성자 호출(super(...) 또는 this(...)) 전에 코드를 작성할 수 있는 기능을 제공한다.(이전 버전에서는 생성자 호출 이전에 작성한 코드에 대해서는 컴파일 오류가 발생한다.) super(...), this(...)는 생성 중인 인스턴스를 참조할 수는 없지만, 인스턴스의 필드를 초기화할 수.. 2025. 3. 26.
Spring Boot ShedLock in Action (with MongoDB) 개요Spring Boot를 사용하여 프로젝트를 진행할 때 간단한 예약 작업은 @Scheduled 어노테이션을 사용하여 간단하게 처리할 수 있다. @Scheduled 로직을 실행하는 서버가 1개인 경우에는 아무런 고민 없이 사용가능하지만, 고가용성을 위하여 2개 이상 서버를 실행하는 경우에는 @Scheduled의 로직이 중복으로 실행되어 개발자가 의도하지 않거나 예측하지 못한 결과가 발생할 수 있다.ShedLock을(https://github.com/lukas-krecan/ShedLock) 사용하면 @Schedule을 사용하여 작성된 로직이 여러 서버에서 실행되더라도 동시에 최대 한 번만 실행되도록 제어할 수 있다. ShedLock의 동작 방식은 @Scheduled 작업이 하나의 서버에서 실행 중이면 다른.. 2025. 3. 18.
Spring Boot를 사용하여 MongoDB Auto-Generated Field 사용하기 개요MongoDB를 사용하면 _id 필드에 대하여 ObjectId를 사용하도록 권장하고 있지만, 다른 DB에서 데이터를 마이그레이션 하거나 데이터 구조상 _id의 값을 Number 형태의 값을 사용해야 하는 경우는 별도의 처리가 필요하다. JPA는 @GeneratedValue를 사용하여 Auto Increment Key 방식을 지원해 주지만 MongoDB의 경우에는 어떻게 처리해야 하는지 알아보자. Getting started프로젝트 설정Spring Boot 프로젝트를 생성하면서 MongoDB 의존성을 추가해 준다.dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' ......} 상품 .. 2025. 3. 12.
Using JSpecify Annotations 개요Spring Framework 7.0.0-M2 버전이 2025년 2월 13일에 공개 되었고(https://spring.io/blog/2025/02/13/spring-framework-7-0-0-M2-available-now) M2버전에서는 null safety(null 안정성 : null로부터 안전한 코드를 작성하는 것) 지원을 위해 JSpecify을 사용하도록 적용이 되었다. Spring Framework GIT에 소스 코드를 보면 JSpecity를 사용하여 null처리를 하도록 적용되어 있다.@NullMarkedpackage org.springframework.context;import org.jspecify.annotations.NullMarked;참고 : https://github.com/sp.. 2025. 2. 25.
JSpecify Nullness User Guide 개요Java의 타입 시스템은 null 안정성을 표현할 수 없다. 하지만 Spring Framework 코드 베이스는 API, 필드 및 타입 사용 시 nullness를 선언하기 위해 JSpecify 어노테이션을 사용하고 있다. 이러한 어노테이션과 의미에 익숙해지려면 JSpecify 사용자 가이드를 읽어 보는 것이 좋다.이러한 명시적 null 안정성의 주요 목표는 NullPointerException을 빌드 타입에 검사하여 런타임에 throw 되는 것을 방지하고 명시적 nullness를 사용하여 null의 가능성을 표현하는 방법으로 전환하는 것이다. Spring Framework에서 사용하는 JSpecify에 대하여 알아본다. JSpecify는 Java 타입에 null 값이 포함되어 있는지 여부를 설명하는 .. 2025. 2. 19.