전체 글117 Spring Boot 4 모듈화 개요Spring Boot 4.0.0이 2025.11.20 정식으로 출시(https://spring.io/blog/2025/11/20/spring-boot-4-0-0-available-now)되었고, 많은 변경사항 중 하나인 Modular Spring Boot 4에 대하여 알아보자 A Modular Spring Boot 4Spring Boot 4가 출시되고 큰 변경사항 중 하나는 바로 기존에 단일(monolithic) spring-boot-autoconfigure JAR 파일 대신, 기능을 더 작고 집중된 모듈로 분리하여 각각의 JAR 파일로 제공하는 것이다. 아래는 Spring Boot4와 Spring Boot 3의 spring-boot-autoconfigure JAR 파일에 패키지 구조를 보면 Spri.. 2025. 12. 11. Embabel을 사용하여 AI Agent API로 제공하기 개요이전 포스팅(https://blog.igooo.org/186)에서 Embable을 사용하여 AI Agent를 개발하는 방법에 대하여 알아보았다. 빠르게 Embabel을 알아보기 위해서 Spring Shell을 사용한 간단한 CLI 형태로 예제를 작성했는데 이번에는 AI Agent를 여러 사람에게 쉽게 제공하기 위해서는 API 형태로 제공을 해야 하기 때문에 API로 AI Agent를 제공하는 방법에 대해서 알아보자.Spring Web을 사용하여 API를 제공하고 AI Agent와 연동하는 방법에 대하여 알아본다. Getting Started준비사항이전 포스팅(https://blog.igooo.org/186)을 작성했을 당시 Emababel 버전이 0.1 이었고 현재 작성일(2025-12) 기준으로는 .. 2025. 12. 11. Embabel을 사용하여 AI Agent 만들기 개요Embabel은 JVM 환경에서 동작하는 AI Agent 프레임웍으로, LLM 기반의 상호작용을 기존의 코드 및 도메인 모델과 자연스럽게 결합하는데 초점을 두고 개발된 프레임워크다. 즉 Java, Kotlin 프로젝트 환경에서 AI Agent를 기존 프로젝트와 쉽게 통합하여 개발할 수 있게 해 준다.핵심적인 특징은 사용자가 요청한 목표를 달성하기 위해 에이전트가 스스로 계획을 세우고 행동한다. 또한 AI 기반의 플래너가 상황에 따라 최적의 행동 순서를 결정하여 사용자의 요청을 처리한다. 또한 Kotlin으로 개발되어 Java, Kotlin으로 개발된 많은 시스템에 통합이 쉽다. 더 자세한 설명은 Rod Johnson이 작성한 블로그를 참고하자.https://medium.com/@springrod/em.. 2025. 10. 4. Java 25 새로운 기능으로 더 좋은 코드 작성하기 개요JDK 25가 2025/09/16 정식으로 출시(https://openjdk.org/projects/jdk/25/) 되었고 JDK 21부터 JDK 25까지 추가된 특징을 확인하여 더 좋은 코드를 작성할 수 있는 방법에 대하여 알아본다.(참고 : JDK 24에 추가된 기능에 대해서 이전 글을 https://blog.igooo.org/171 참고한다.) Sealed Type에 대한 Switch 표현식Sealed Type에 대하여 switch 구문을 사용하면 견고함과 확장성을 유지하면서도 코드의 다독성을 크게 향상할 수 있다. 아래 예제에는 서버의 응답을 모델링하는 ServerResponse의 sealed 타입이 있다.sealed interface ServerResponse { record Res.. 2025. 9. 19. Jenkins Job DSL을 사용하여 Job 관리하기 개요Spring Batch로 개발한 Batch를 관리하기 위해서 사용하고 관리하기 쉬운 Jenkins(https://www.jenkins.io)을 사용하는 경우가 많다. 운영하는 Batch Job이 많아지고, 지속적인 관리가 필요한 경우 많은 Batch Job을 Jenkins의 UI를 통해서 관리하는 일은 쉬운 일이 아니다. 예를 들어 동일한 파라미터를 사용하지만 특정 설정만 다른 Batch Job이 여러 개 있는 경우 공통 파라미터 수정을 위하여 Jenkins UI를 통해서 여러 Job을 설정하다 보면 시간도 오래 걸리고, 입력 실수를 할 수도 있다.그래서 인프라를 코드로 관리하는(Infrastructure as Code) Terraform, Ancible처럼 Jenkins Job을 Groovy 스크립.. 2025. 9. 5. Mockito - 메서드 체이닝 테스트 코드 작성하기 개요mockito를 사용하여 테스트 코드를 작성하다 보면 Spring WebClient처럼 메서드 체이닝을 사용하여 작성된 코드에 테스트 코드를 작성해야 하는 경우가 있다. 일반적인 mock 처리 방법을 사용하여 테스트 코드를 작성하면 메서드 체이닝에 포함된 모든 메서드에 대하여 mock 처리 코드를 추가해야 하지만, Mockito의 RETURNS_DEEP_STUBS를 사용하면 테스트 코드를 더 간결하게 작성할 수 있으니 알아보도록 하자. As-isMockito를 사용하여 기존처럼 테스트 코드를 작성하면 webClient에 메서드 체이이닝에 대하여 모든 메서드를 given으로 mock 처리를 해야 해서 테스트할 코드보다 테스트 코드가 길어지는 상황이 발생하게 된다.class WebClientService.. 2025. 8. 25. Elasticsearch 최신 데이터에 score 가중치 부여하기 개요Elasticsearch를 사용하여 검색할 때 정적 데이터를 기반으로 더 높은 score를 부여하고 싶을 때가 있다. 예를 들어 게시글 검색의 경우 최신 게시글에 더 높은 score를 부여하거나, 제품 검색의 경우 판매량이 높은 제품에 대하여 높은 score를 부여하는 경우다. (score를 사용하지 않고 sort를 사용하여 정렬하면 score는 무시하고 문서가 정렬되기 때문에 정확도는 떨어질 수 있다.) Elasticsearch에는 정적 관련성 신호를 점수에 반영(Incorporating static relevance signals into the score)하는 두 가지 방법이 있다.script_socre: https://www.elastic.co/docs/reference/query-langua.. 2025. 8. 18. Spring - Path Prefix 개요Spring을 사용하여 API를 개발할 때 여러 개의 Controller를 생성하고, @RequestMapping을 사용하여 각 Controller에 공통된 Prefix Path를(ex /api/v1.0/, ...) 설정하는 방법으로 API의 URL을 정의해 왔다. 이번 포스트에서는 Spring의 WebMvcConfigurer를 사용하여 원하는 Controller에 Path Prefix를 설정하는 방법을 알아본다. As-isWebMvcConfigurer를 사용하는 방법을 알아보기 전에 기존 프로젝트의 코드에서는 대부분 아래와 같이 개발하는 경우가 많았다.Controller에 @RequestMapping을 사용하여 상수로 정의한 API_PREFIX를 path 문자열 앞에 추가하여 API URL을 정의한.. 2025. 8. 18. Elasticsearch 숫자형 데이터 검색 성능 개선 개요Elasticsearch에서 ISBN, 제품의 ID 또는 카테고리 ID와 같은 숫자형 데이터를 검색할 때, 숫자형 데이터의 타입을 keyword 타입으로 변경하면 검색 성능이 향상되는 경우가 있다. 이번 게시글에는 숫자형 데이터를 keyword로 타입을 변경하여 검색 성능이 향상되는지 알아보자. Elasticsearch Field data typesElasticsearch에는 다양한 데이터 타입을(https://www.elastic.co/docs/reference/elasticsearch/mapping-reference/field-data-types) 제공하고 있다. 사용자는 색인할 데이터에 맞는 타입을 선택하여 mapping 정보를 입력해야 올바른 검색 방법과 검색 결과를 얻을 수 있다.숫자형 데이.. 2025. 8. 5. 이전 1 2 3 4 ··· 13 다음 728x90