Spring 한국어 노트

Spring 한국어

스프링은 웹 애플리케이션을 빠르고 효율적으로 구축하는 데 사용되는 강력한 도구 세트입니다. 개발자가 엔터프라이즈 수준의 애플리케이션을 생성하는 데 사용할 수 있는 간단하고 확장 가능한 코드 작성 방법을 제공합니다. 스프링 프레임워크는 Java 또는 다른 언어를 사용하여 애플리케이션을 생성하고, 이를 어떤 계층 서버에든 배포할 수 있도록 합니다. 예를 들어 HTTP 서버 또는 애플리케이션 서버 등입니다.스프링은 다양한 환경에서 가치가 증명된 것으로, 소규모 및 대규모 팀 모두에게 다양한 작업을 용이하게 합니다. 프레임워크는 독립적으로 또는 함께 사용할 수 있는 다양한 모듈을 제공하여 엔터프라이즈 수준의 애플리케이션을 생성하는 데 유연성과 간소화를 제공합니다.공식 스프링 사이트는 개발자가 시작하고 프레임워크를 마스터하는 데 도움이 되는 다양한 리소스와 도구를 제공합니다. 예를 들어 문서, 자습서, 교육 과정, 예제 등이 있습니다. 사이트에는 또한 최신 릴리즈 노트, 업데이트와 개발자가 아이디어를 공유하거나 지원을 받거나 프로젝트에 기여할 수 있는 커뮤니티 섹션도 포함되어 있습니다.

노트 스레드

이번 주 Spring에는 커뮤니티를 위한 몇 가지 흥미로운 업데이트와 발표가 있습니다. 분산 작업 실행 엔진인 JobRunr가 Spring Initializr에 추가되어 개발자들이 이 도구를 더 쉽게 시작할 수 있게 되었습니다. Craig Walls의 최근 게시물은 Spring AI와 함께 여러 대규모 언어 모델을 사용하는 방법을 탐구하며 개발자들에게 귀중한 통찰력을 제공합니다. Spring for Apache Kafka와 Kafka Streams의 데드 레터 큐를 사용하는 방법에 대한 기사도 게시되어 Kafka를 사용하는 사람들에게 유용한 자료를 제공합니다. Spring Boot 팀의 일원인 Moritz Halbritter는 Spring Framework 7과 Spring Boot 4가 null 포인터를 식별하고 제거하는 데 어떻게 도움이 되는지에 대한 강연을 했습니다. Spring Cloud Contract는 Stubborn.sh로 새로운 보금자리로 이전될 예정이며, 이곳에서 개발자들에게 중요한 도구로 계속 사용될 것입니다. A Bootiful Podcast의 최근 에피소드에서는 Spring Framework 및 Spring AI 기여자 Sebastien Deleuze와 함께 이야기를 나눴습니다. Spring AI의 MCP 주석에 대한 튜토리얼이 게시되어 개발자들에게 유용한 가이드라인을 제공합니다. Spring AI의 도입 또한 강조되어 Spring 커뮤니티에 미칠 잠재적 이점을 보여주었습니다. 전반적으로 Spring 커뮤니티는 번창하고 있으며, Apache Kafka의 개발사인 Confluent와 같은 공급업체들은 자사 제품이 Spring 생태계를 어떻게 지원하고 향상시킬 수 있는지에 집중하고 있습니다.
이 글의 저자는 2011년 1월부터 This Week in Spring이라는 주간 요약을 작성해 온 Spring 팬입니다. 저자는 최근 아시아 투어를 마치고 현재 일본에서 휴가를 보내고 있으며, 이곳에서 휴식을 취하고 Spring 세계의 새로운 발전에 대해 배울 계획입니다. Microsoft는 새로운 Spring AI 2.0 출시와 Azure CosmosDB와의 통합에 대한 블로그 게시물을 작성했습니다. Craig Walls는 또한 음성을 Spring AI 및 ElevenLabs Voices와 함께 사용하는 방법에 대한 레시피를 작성했습니다. Spring Boot의 최신 버전인 4.1이 새로운 기능과 CVE에 대한 패치를 포함하여 출시되었으며, 사용자는 가능한 한 빨리 코드를 업데이트하는 것이 좋습니다. 저자는 취약점이 발견, 공개 및 수정되는 과정을 설명하고, AI가 이 과정을 더 쉽게 만들었지만 CVE의 양도 증가시켰다고 설명합니다. 저자는 또한 MongoDB 기반 Spring Batch 리포지토리와 자동 구성을 포함한 Spring Boot 4.1의 몇 가지 새로운 기능에 대해 언급합니다. 또한, 저자는 Spring AI 2.0의 Self-Correcting Structured Output에 대한 블로그 게시물과 CVE 상태에 대한 팟캐스트 에피소드를 포함한 다른 흥미로운 기사와 팟캐스트를 강조합니다. 저자는 또한 일본어 Spring Boot 시리즈와 Spring AI를 사용한 에이전트 스킬 구축에 대한 게시물을 포함한 다른 리소스를 언급합니다. 전반적으로 이 글은 Spring 생태계의 최신 개발에 대한 업데이트를 제공하고 사용자가 최신 릴리스 및 보안 패치를 최신 상태로 유지하도록 권장합니다.
대규모 언어 모델은 강력하지만 소프트웨어 통합을 위한 구조화된 데이터에는 어려움을 겪습니다. Spring AI의 구조화된 출력은 모델이 정의된 스키마를 준수하는 텍스트를 생성하도록 허용하여 이 간극을 메우며, 이는 타입이 지정된 객체로 파싱됩니다. Spring AI 2.0은 두 가지 주요 개선 사항을 도입합니다. 공급자 네이티브 구조화된 출력 및 자체 수정 스키마 유효성 검사입니다. 기존 코드는 변경되지 않은 기본값으로 인해 호환됩니다.구조화된 출력을 생성하기 위해 개발자는 Java record를 정의한 다음 .entity() 메서드를 사용하여 대상 유형을 지정합니다. 이 프로세스는 내부적으로 레코드에서 JSON 스키마를 생성하고, 이를 프롬프트에 추가하고, 모델의 JSON 응답을 원하는 객체로 다시 파싱합니다. Spring AI 2.0 이전에는 이 프로세스에 보장이 부족하여 모델이 스키마에서 벗어날 경우 잠재적인 파싱 오류가 발생했습니다..validateSchema() 스위치는 자체 수정 재시도 루프를 활성화하여 스키마에 대해 모델의 응답을 자동으로 유효성 검사하고 유효성 검사에 실패하면 특정 오류 피드백과 함께 프롬프트를 다시 발행합니다. 더 강력한 보장을 위해 .useProviderStructuredOutput()은 공급자별 API 기능을 활용하여 소스에서 스키마 준수를 강제합니다. 이렇게 하면 잘못된 응답이 처음부터 생성되지 않도록 하여 잘못된 출력을 최소화합니다.이 두 가지 기능은 최대 복원력을 위해 결합될 수 있으며, 공급자 네이티브 출력이 기본 제약 역할을 하고 스키마 유효성 검사가 대체 역할을 합니다. List 및 Map과 같은 제네릭 유형의 경우 간단한 Class 대신 ParameterizedTypeReference가 사용됩니다. .responseEntity() 메서드를 사용하면 파싱된 엔티티와 메타데이터를 위한 원시 ChatResponse 모두에 액세스할 수 있습니다.내장된 변환기가 불충분한 경우 사용자 지정 StructuredOutputConverter 구현을 사용하여 비표준 JSON 래핑 또는 YAML 또는 CSV와 같은 완전히 다른 형식을 처리할 수 있습니다. 이는 다양한 통합 요구에 대한 추가 유연성을 제공합니다.
CdXz5zHNQW_ujOXatEKZz.png
Spring Batch는 역사적으로 JobRepository에서 작업 실행 상태를 저장하기 위해 SQL 데이터베이스에 의존해 왔습니다. 이 요구 사항은 MongoDB와 같은 NoSQL 데이터베이스를 주로 사용하는 사용자들에게도 지속되었습니다. 최근 Spring Batch 버전에서는 JobRepository를 JDBC에서 분리했으며, Spring Boot 4.1은 MongoDB에 대한 자동 구성을 도입했습니다. 이를 통해 배치 메타데이터를 MongoDB에 저장할 수 있어 별도의 SQL 데이터베이스가 필요 없어졌습니다. 이 글은 JobRepository에 MongoDB를 사용하는 Spring Batch 작업의 완전한 예제를 보여줍니다. 이 예제는 Docker Compose를 사용하여 MongoDB와 PostgreSQL을 설정합니다. CSV에서 고객 데이터를 읽어 PostgreSQL 테이블에 쓰는 ETL 작업을 정의합니다. 이는 대상 테이블을 재설정하는 작업과 실제 데이터 전송을 위한 작업의 두 단계로 이루어집니다. 데이터 전송 단계에서는 FlatFileItemReader, 간단한 프로세서, JdbcBatchItemWriter를 사용합니다. 이 청크 기반 단계에 대한 내결함성 및 재시도 메커니즘이 구성됩니다. 그런 다음 애플리케이션이 실행되며, 모든 작업 실행 세부 정보가 MongoDB에 기록됩니다. OpenTelemetry 및 Grafana 통합으로 관찰 가능성이 향상됩니다. 이 글은 또한 Spring Batch를 GraalVM 네이티브 이미지와 함께 작동하도록 하는 방법과 최적화를 위한 지연 데이터 소스 연결을 소개합니다. 핵심은 Spring Batch가 이제 MongoDB와 원활하게 통합되어 개발자가 선호하는 데이터베이스를 타협 없이 사용할 수 있다는 것입니다.
Spring AI 2.0은 툴 호출을 개편하여 어드바이저 체인 내에서 핵심적이고 조합 가능한 기능으로 만들었습니다. 에이전트는 이제 이 기능을 활용하여 정보를 발견하고 목표를 향해 행동합니다. 툴은 메서드에 @Tool 어노테이션을 사용하여 정의되며, Spring AI는 자동으로 매개변수에 대한 JSON 스키마를 생성합니다. ToolCallingAdvisor는 툴 실행 루프를 오케스트레이션하며, 더 이상 툴 호출이 생성되지 않을 때까지 LLM을 재귀적으로 호출합니다. 메모리 어드바이저를 이 루프 안에 배치하면 전체 툴 요청 및 응답 기록을 유지하여 더 풍부한 컨텍스트를 캡처할 수 있습니다. 그러나 이를 위해서는 InMemoryChatMemoryRepository와 같은 특정 ChatMemoryRepository 구현이 필요합니다. 대규모 툴 세트의 경우 ToolSearchToolCallingAdvisor는 컨텍스트 과부를 피하기 위해 점진적인 툴 공개를 제공합니다. 이 어드바이저는 툴 인덱스를 사용하여 자연어 쿼리에 따라 관련 툴을 점진적으로 노출합니다. 툴 인수 증강을 통해 내부 사고에 유용한 툴 코드 수정 없이 툴 입력 스키마를 동적으로 확장할 수 있습니다. MCP 툴은 원격 및 로컬 툴 정의를 통합하여 애플리케이션이 MCP 서버를 통해 Spring 관리 툴을 소비하거나 노출할 수 있도록 합니다. 로컬 @Tool 어노테이션과 원격 MCP 툴 모두 동일한 ToolCallback 인터페이스를 사용하여 어드바이저 체인에 원활하게 통합됩니다.
CdXz5zHNQW_yrI1Czp9Eu.png
Spring AI 2.0.0이 출시되어 AI 애플리케이션 개발에 상당한 개선과 새로운 기준을 제공합니다. 이 릴리스는 Spring Boot 4와 Spring Framework 7을 기반으로 하며, Jackson 3를 통한 향상된 JSON 직렬화와 코드 안정성을 향상시키는 완전한 null-safety 어노테이션을 특징으로 합니다. 옵션 처리는 빌더가 생성자를 대체하면서 명확성과 불변성을 위해 리팩토링되었습니다. 핵심 프로젝트는 이제 OpenAI, Anthropic, Google GenAI와 같이 잘 지원되는 채팅 모델 제공업체에 집중하여 벤더 SDK를 활용하여 적응성을 높였습니다. CONTRIBUTING.md 가이드라인 업데이트를 통해 커뮤니티와의 협업이 강화되었습니다. Agentic AI 기능이 크게 향상되었으며, 도구 실행 루프는 이제 어드바이저 체인 내에서 일급의 컴포저블 구성 요소가 되었습니다. 통합 도구 호출, 수백 개의 도구로 확장하기 위한 점진적 도구 공개, 구조화된 자체 수정 출력 메커니즘이 새로 추가되었습니다. 이 릴리스는 또한 이벤트 소싱 대화 메모리 및 에이전트 패턴을 위한 커뮤니티 확장 기능을 도입합니다. Model Context Protocol (MCP) 통합은 공식 Java SDK, 어노테이션 기반 프로그래밍, 스트림 가능한 HTTP를 포함한 새로운 전송 구현을 통해 향상되었습니다. Micrometer 스팬, OpenTelemetry 메트릭, OAuth 2.0 보안과 같은 엔터프라이즈 기능도 상속됩니다. Spring AI 2.0은 개발자 경험을 크게 향상시키고 향후 AI 기능을 위한 길을 열어주는 것을 목표로 합니다.
Spring AI 엔지니어링 팀이 Maven Central에서 사용 가능한 Spring AI 2.0.0-RC2의 출시를 발표했습니다. 이 릴리스에는 중요한 개선 사항, 안정성 향상 및 버그 수정이 포함되어 있어 사용자에게 중요한 업데이트입니다. 이 릴리스의 초점은 Anthropic 및 OpenAI HTTP 클라이언트를 구성 가능하게 만들고 Spring Framework 버전 7.0.4 미만과의 호환성을 복원하는 것과 같은 주요 개선 사항에 맞춰져 있습니다. 이 릴리스에는 BedrockProxyChatModel 모델 옵션 처리 및 OllamaChatModel 문제에 대한 수정 사항을 포함한 버그 수정도 포함되어 있습니다. 또한 이 릴리스는 OpenAI 어시스턴트 기록의 리플레이 추론 콘텐츠 문제와 ChatModel에서 옵션이 병합되는 대신 대체되는 문제를 해결합니다. Spring AI 팀은 런타임 주입 도구를 지원하기 위해 ToolCallingAdvisor가 항상 자동 등록되도록 했습니다. Spring AI 2.0.0-RC2의 전체 릴리스 노트는 사용자가 검토할 수 있습니다. Spring AI 팀은 Spring Boot를 사용하여 AI 애플리케이션 개발을 개선하는 데 계속 집중할 것이며, 향후 버전은 이 릴리스에서 확립된 기반을 구축할 것입니다. 사용자는 GitHub 리포지토리를 방문하거나 커뮤니티 채널에서 토론에 참여하여 최신 개발 정보를 얻고 프로젝트에 기여할 수 있습니다. Spring AI 2.0.0-RC2의 프로젝트 페이지, GitHub 리포지토리 및 문서는 모두 사용자를 위한 리소스로 제공됩니다.
Spring AI 엔지니어링 팀이 2.0.0 GA를 향한 API 안정화 마일스톤인 Spring AI 2.0.0-RC1의 출시를 발표했습니다. 이 릴리스에는 모든 모델에 걸쳐 통합된 도구 실행이 포함되며, 도구 실행은 이제 ChatClient와 ToolCallingAdvisor를 통해 외부에서 처리됩니다. internalToolExecutionEnabled 속성은 제거되었으며, toolNames API와 SpringBeanToolCallbackResolver는 명시적인 ToolCallback 빈으로 대체되었습니다. ToolCallAdvisor는 ToolCallingAdvisor로 이름이 변경되었고, 주문형 도구 검색을 위해 새로운 ToolSearchToolCallingAdvisor가 도입되었습니다. 메모리 어드바이저는 기본적으로 ToolCallingAdvisor 외부에 배치되며, DEFAULT_CHAT_MEMORY_PRECEDENCE_ORDER가 낮아졌습니다. 이 릴리스에는 MessageWindowChatMemory의 turn-boundary snapping 및 도구 프롬프트에서 중복 채팅 메모리 방지와 같은 채팅 메모리 개선 사항도 포함됩니다. spring_ai_chat_memory 테이블의 타임스탬프 필드에 프로그래밍 방식으로 액세스할 수 있는 기능을 포함하여 구조화된 출력 개선 사항이 추가되었습니다. 또한 API 및 코드 정리, 모델 업데이트, 버그 수정, 문서 업데이트 및 종속성 업그레이드가 포함되었습니다. Spring AI 팀은 이 릴리스 작업에 참여한 모든 기여자에게 감사를 표하며, 프로젝트 페이지, GitHub 및 Stack Overflow에서 리소스를 사용할 수 있습니다. 2.0.0-RC1에 대한 릴리스 노트 및 문서를 사용할 수 있습니다. 전반적으로 이 릴리스는 Spring AI 프레임워크에 대한 다양한 개선 사항 및 향상 기능을 제공하며, 최종 2.0.0 GA 릴리스를 향한 중요한 단계입니다.
This Week in Spring의 최신 호가 공개되었으며, 5월 릴리스 지연에 대한 내용을 다루고 새로운 릴리스 일정에 대한 업데이트를 제공합니다. 5월 Spring 릴리스 트레인은 보안 패치 필요성으로 인해 6월 8일부터 14일까지로 연기되었습니다. Spring 포트폴리오 내 대부분의 프로젝트는 새로 발표된 보안 패치에 대한 업그레이드가 필요하며, 가능한 한 빨리 업그레이드하는 것이 강력히 권장됩니다. 지연 이유는 Common Vulnerabilities and Exposures의 급증으로, 2026년 3월에 55건의 새로운 보안 보고서가 제출되어 4월에 26건의 새로운 CVE가 발표되었습니다. Spring 팀은 이러한 상황에 대처하고 사용자에게 필요한 업그레이드를 제공하기 위해 노력하고 있습니다. 다른 소식으로는 A Bootiful Podcast의 최신 에피소드에 Microsoft의 Martijn Verburg와의 인터뷰가 포함되어 있습니다. Spring AI 2.0.0-M8, Spring AI 1.0.8, Spring AI 1.1.7을 포함한 새로운 릴리스가 제공됩니다. Coursera에 Spring AI에 대한 새로운 과정이 개설되었으며, 즉시 등록할 수 있습니다. 또한, Spring과 MCP를 사용하여 AI 에이전트 구축에 대한 강연과 Spring AI Playground 프로젝트를 포함하여 몇 가지 흥미로운 강연과 프로젝트를 이용할 수 있습니다. Spring 팀은 사용자가 Spring 및 AI의 최신 개발 동향을 파악하는 데 필요한 도구와 리소스를 제공하기 위해 최선을 다하고 있습니다.
CdXz5zHNQW_FLFeoaXx2i.png