Logged Application Name
기본 로그 출력에 이제 spring.application.name
속성을 설정한 경우 애플리케이션 이름이 포함됩니다. 이전 형식을 선호하는 경우 logging.include-application-name
을
false로 설정할 수 있습니다.
Auto-configured User Details Service
자동 구성된 InMemoryUserDetailsManager
는 이제 classpath에 spring-security-oauth2-client
,spring-security-oauth2-resource-server
,
또는 spring-security-saml2-service-provider
중 하나 이상이 있을 때 물러납니다. 마찬가지로, 리액티브 애플리케이션에서 자동 구성된MapReactiveUserDetailsService
는 classpath에 spring-security-oauth2-client
와 spring-security-oauth2-resource-server
중
하나
이상이 있을 때 물러납니다.
위의 의존성 중 하나를 사용하고 있지만 여전히 애플리케이션에서 InMemoryUserDetailsManager
또는 MapReactiveUserDetailsService
가 필요한 경우, 애플리케이션에서 필요한
bean을 정의하세요.
OTLP Tracing Endpoint
management.otlp.tracing.endpoint
의 기본 값이 제거되었습니다. OtlpHttpSpanExporter
bean은 이제 management.otlp.tracing.endpoint
에
값이 있을
때만 자동 구성됩니다. 이전 행동을 복원하려면 management.otlp.tracing.endpoint=http://localhost:4318/v1/traces
로 설정하세요.
H2 Version 2.2
Spring Boot는 이제 기본적으로 H2의 버전 2.2를 사용합니다. 이전 버전의 H2에서 데이터베이스를 계속 사용하려면 데이터 마이그레이션이 필요할 수 있습니다. 업그레이드하기 전에 SCRIPT
명령을
사용하여
데이터베이스를 내보냅니다. 새 버전의 H2로 빈 데이터베이스를 만든 다음 RUNSCRIPT
명령을 사용하여 데이터를 가져옵니다.
Oracle UCP DataSource
Oracle UCP DataSource는 이제 기본적으로 validateConnectionOnBorrow
를 true
로 설정하지 않습니다. 이전 행동을 복원하려면spring.datasource.oracleucp.validate-connection-on-borrow
애플리케이션 속성을 true
로 설정하세요.
Jetty 12
Spring Boot는 이제 Jetty 12를 지원합니다. Jetty 12는 Servlet 6.0 API를 지원하여 Tomcat 및 Undertow와 일치합니다. 이전에 Spring Boot 3.x와 함께
Jetty를 사용하는 경우 Servlet API를 5.0으로 다운그레이드해야 했습니다. 이제 더 이상 필요하지 않습니다. 업그레이드할 때 Servlet API 버전의 오버라이드를 제거하세요.
Kotlin 1.9.0 및 Gradle
Kotlin Gradle 플러그인 1.9.0에는 추가 리소스 디렉토리가
손실되는 버그가 있습니다. 이것은 AOT
처리에 의해 생성된 리소스가 네이티브 이미지의 클래스패스에 포함되지 않아 네이티브 이미지 컴파일이
중단됩니다. 이 문제를 해결하려면 Kotlin의 Gradle 플러그인을 먼저 적용하세요.
중첩된 Jar 지원
Java 8을 더 이상 지원할 필요가 없어짐에 따라 Spring Boot의 "Uber Jar" 로딩을 지원하는 기본 코드가 다시 작성되었습니다. 업데이트된 코드는 JDK 기대치와 더 일치하는 새로운 URL 형식을
사용합니다. 이전 URL 형식인 jar:file:/dir/myjar.jar:BOOT-INF/lib/nested.jar!/com/example/MyClass.class
는 jar:nested:/dir/myjar.jar/!BOOT-INF/lib/nested.jar!/com/example/MyClass.class
로 대체되었습니다. 업데이트된 코드는 또한 자원 관리를 위해
java.lang.ref.Cleaner(이는 JDK 9의 일부였습니다)를 사용합니다.
새 코드가 가능한 한 이전 구현의 투명한 대체품이 되도록 모든 노력을 기울였습니다. 대부분의 사용자는 변경 사항을 알아차리지 못할 것으로 예상합니다. 하지만, 기본 런처의 런처 클래스 중 하나를 직접 참조했던 경우
새 이름 때문에 변경을 알아차릴 수 있습니다:
New | Classic |
---|---|
org.springframework.boot.loader.launch.JarLauncher |
org.springframework.boot.loader.JarLauncher |
org.springframework.boot.loader.launch.PropertiesLauncher |
org.springframework.boot.loader.PropertiesLauncher |
org.springframework.boot.loader.launch.WarLauncher |
org.springframework.boot.loader.WarLauncher |
그러나 새 구현에 문제가 있다면, 이전 코드를 사용할 수 있도록 하는 대체 옵션을 제공했습니다.
Gradle 사용자의 경우 bootJar.loaderImplementation
을 org.springframework.boot.loader.tools.LoaderImplementation.CLASSIC
로 설정할
수
있습니다.
예를 들어:
bootJar {
loaderImplementation = org.springframework.boot.loader.tools.LoaderImplementation.CLASSIC
}
Maven 사용자의 경우 spring-boot-plugin 구성에서
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<loaderImplementation>CLASSIC</loaderImplementation>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
새 구현에서 예상치 못한 행동을 발견하면 GitHub 이슈를 제기해 주세요.
Deprecations from Spring Boot 3.0
Spring Boot 3.0에서 사용 중지된 클래스, 메서드 및 속성은 이 릴리스에서 제거되었습니다. 업그레이드하기 전에 사용 중지된 메서드를 호출하지 않았는지 확인하세요.
Minimum Requirements Changes
최소 요구 사항 변경 없음.
팁 | 구성 변경 기록에서 변경 사항에 대한 전체 개요를 확인하세요. |
---|
Spring for Apache Pulsar Support
Spring Boot는 이제 Apache Pulsar 프로젝트에 대한 자동 구성 지원과 시작 POM을 포함합니다. 전체
세부
사항은 업데이트된 참조 문서
를 참조하세요.
Logging Correlation IDs
Spring Boot는 이제 Micrometer 추적을 사용할 때 자동으로 상관 ID를 로그합니다. 세부
사항은 업데이트된 문서
를 참조하세요.
RestClient Support
Spring Boot 3.2는 Spring Framework 6.1에서 도입된 새로운 RestClient
인터페이스를 지원합니다. 이 인터페이스는 WebClient
와 유사한 디자인을 가진 기능 스타일의 블로킹
HTTP API를 제공합니다.
기존 및 새 애플리케이션은 RestTemplate
대신 RestClient
를 사용하는 것을 고려할 수 있습니다.
세부
사항은 업데이트된 참조 문서
를 참조하세요.
RestTemplate HTTP Clients
Jetty의 HttpClient
가 클래스패스에 있을 때, Spring Boot의 HTTP 클라이언트 자동 탐지는 이제 Spring Framework 6.1에서 도입된 새로운JettyClientHttpRequestFactory
를 사용하도록 RestTemplateBuilder
를 구성합니다.
JdkClientHttpRequestFactory
에 대한 지원이 ClientHttpRequestFactories
에 추가되었습니다. JettyClientHttpRequestFactory
와 달리 자동 탐지에
추가되지
않았습니다. JdkClientHttpRequestFactory
를 사용하려면 선택해야 합니다:
@Bean
RestTemplateBuilder restTemplateBuilder(RestTemplateBuilderConfigurer configurer){
return configurer.configure(new RestTemplateBuilder())
.requestFactory(
(settings)->ClientHttpRequestFactories.get(JdkClientHttpRequestFactory.class,settings));
}
Support for JdbcClient
JdbcClient
에
대한 자동 구성이 추가되었으며, NamedParameterJdbcTemplate
의 존재에 기반합니다. 후자가 자동 구성된 경우, spring.jdbc.template.*
의 속성이 고려됩니다.
Support for Virtual Threads
Spring Boot 3.2는 가상 스레드를 지원합니다. 가상 스레드를 사용하려면 Java 21에서
실행하고 spring.threads.virtual.enabled
속성을 true
로 설정해야 합니다.
Servlet Web Servers
가상 스레드가 활성화되면, Tomcat과 Jetty는 요청 처리에 가상 스레드를 사용합니다. 즉, 웹 요청을 처리하는 애플리케이션 코드, 예를 들어 컨트롤러의 메서드는 가상 스레드에서 실행됩니다.
Blocking Execution with Spring WebFlux
Spring WebFlux의 블로킹 실행 지원은 applicationTaskExecutor
빈이 AsyncTaskExecutor
일 때 자동 구성됩니다. applicationTaskExecutor
는
기본적으로도 가상
스레드가 활성화되었을 때도 AsyncTaskExecutor
입니다.
Task Execution
가상 스레드가 활성화되면, applicationTaskExecutor
빈은 가상 스레드를 사용하도록 구성된 SimpleAsyncTaskExecutor
가 됩니다. applicationTaskExecutor를
사용하는
모든 곳, 예를 들어 @Async
메서드를 호출할 때 @EnableAsync
, Spring MVC의 비동기 요청 처리, Spring WebFlux의 블로킹 실행 지원은 이제 가상 스레드를 사용합니다. 이전과
마찬가지로, auto-configured executor에는 TaskDecorator 빈이 적용되며, spring.task.execution.thread-name-prefix 속성이 적용됩니다. 다른spring.task.execution.*
속성은 풀 기반 실행기에 특정한 것이므로 무시됩니다.
SimpleAsyncTaskExecutorBuilder
는 이제 애플리케이션 컨텍스트에서 사용할 수 있으며 SimpleAsyncTaskExecutor
를 구축하는 데 사용될 수 있습니다.SimpleAsyncTaskExecutorCustomizer
빈은 구축된 SimpleAsyncTaskExecutor
를 사용자 정의하는 데 사용할 수 있습니다. 가상 스레드가 활성화되면 빌더는 자동으로 그것들을
사용하도록 구성됩니다.
Task Scheduling
가상 스레드가 활성화되면, taskScheduler
빈은 가상 스레드를 사용하도록 구성된 SimpleAsyncTaskScheduler
가 됩니다.spring.task.scheduling.thread-name-prefix
속성과 spring.task.scheduling.simple.
속성이 적용됩니다. 다른 spring.task.scheduling.
속성은 풀
기반 스케줄러에 특정한 것이므로 무시됩니다.
SimpleAsyncTaskSchedulerBuilder
는 이제 애플리케이션 컨텍스트에서 사용할 수 있으며 SimpleAsyncTaskScheduler
를 구축하는 데 사용될 수 있습니다.SimpleAsyncTaskSchedulerCustomizer
빈은 구축된 SimpleAsyncTaskScheduler
를 사용자 정의하는 데 사용할 수 있습니다. 가상 스레드가 활성화되면 빌더는 자동으로
그것들을
사용하도록 구성됩니다.
Keeping the JVM Alive
spring.main.keep-alive
라는 새로운 속성이 있습니다. 이것이 true
로 설정되면, 다른 모든 스레드가 가상(또는 데몬) 스레드인 경우에도 JVM이 계속 살아있게 됩니다.
Technology Specific Integrations
가상 스레드가 활성화되면, 다음과 같은 기술별 통합이 적용됩니다:
RabbitMQ 리스너에 대해 가상 스레드 실행기가 자동 구성됩니다.
Kafka 리스너에 대해 가상 스레드 실행기가 자동 구성됩니다.
Spring Data Redis의
ClusterCommandExecutor
는 가상 스레드를 사용합니다.Spring for Apache Pulsar는 자동구성된
ConcurrentPulsarListenerContainerFactory
와DefaultPulsarReaderContainerFactory
에
대해VirtualThreadTaskExector
를 사용합니다.
Initial support for JVM Checkpoint Restore
Spring Boot 3.2는 JVM 체크포인트 복원(Project CRaC)에 대한 초기 지원을 제공합니다. 자세한 내용은
관련 문서를
참조하세요.
SSL Bundle Reloading
SSL 번들은 이제 신뢰 재료가 변경될 때 자동으로 재로드될 수 있습니다. 번들은 reload-on-update
속성을 true
로 설정함으로써 이 기능을 사용하도록 선택해야 합니다. 번들의 사용자도 재로딩을
지원해야
합니다.
재로딩을 지원하는 소비자는 다음과 같습니다:
- Netty 웹 서버
- Tomcat 웹 서버
SSL 번들 재로딩에 대한 자세한
정보는 참조 문서
에서 찾을 수 있습니다.
Observability Improvements
이제
Micrometer의 @Timed
, @Counted
, @NewSpan
, @ContinueSpan
및 @Observed
어노테이션을 사용할 수 있습니다. 이들에 대한
aspects는 이제
클래스패스에
AspectJ가 있으면 자동 구성됩니다.
Micrometer Tracing의 ObservationHandler
빈은 ObservationConfig
에 자동으로 등록됩니다. Spring Boot 3.2.0 이전에는 분류되지 않은 핸들러가 분류된 것보다
먼저
등록되었습니다. 이제 이 순서가 바뀌어 분류된 핸들러가 먼저 등록됩니다. 자세한 내용은 #34399를
참조하세요.
B3 추적 전파의 기본 형식이 single-no-parent에서 single로 변경되었습니다.
@Scheduled
메서드는 이제 관찰성을 위해 계측됩니다.
R2DBC에 대한 관찰성이 추가되었습니다. 활성화하려면 프로젝트에 io.r2dbc:r2dbc-proxy
종속성을 포함시키세요.
Properties
reactive 파이프라인에서 컨텍스트 전파를 제어하는 spring.reactor.context-propagation
이라는 새로운 구성 속성이 있습니다. reactive 파이프라인에서 관찰, 추적 ID 및 스팬
ID를 자동으로 전파하려면 속성을 auto
로 설정하세요.
접두사로 시작하는 관찰을 속성을 통해 비활성화할 수 있습니다. 예를 들어, Spring Security가 관찰을 보고하는 것을 방지하려면management.observations.enable.spring.security=false
로 설정하세요.
management.observations.key-values.*
속성을 사용하여 모든 관찰에 저카디널리티 키-값을 자동 적용할 수 있습니다. 예를 들어management.observations.key-values.region=us-west
를 설정하면 모든 관찰에 키 region과 값 us-west가 추가됩니다.
OpenTelemetry
OpenTelemetry MeterProvider
빈이 발견되면 BatchSpanProcessor
에 자동으로 등록됩니다.
OpenTelemetry에 대한 자동 구성이 개선되었습니다. 컨텍스트에 SdkLoggerProvider
또는 SdkMeterProvider
유형의 빈이 있으면 OpenTelemetry 빈에 자동으로
등록됩니다.
또한, OpenTelemetry의 Resource
가 이제 빈으로 노출되며 management.opentelemetry.resource-attributes
새로운 구성 속성이 리소스 속성을 구성합니다.
OpenTelemetry를 사용하고 SpanProcessor
에 대한 더 많은 제어를 원하는 경우 이제 SpanProcessors
유형의 빈을 정의할 수 있습니다. 기본적으로 사용 가능한 모든SpanProcessor
빈이 적용됩니다. OpenTelemetry의 SpanExporter
와 동일하게 작동하며, 기본값을 무시하려면 SpanExporters
빈을 사용하세요. 기본적으로 사용 가능한 모든 SpanExporter
빈이
적용됩니다.
Broader Exemplar Support in Micrometer 1.12
Micrometer 1.12는 Prometheus 2.43 이상이 필요한
exemplar 지원 확대 기능
을 포함합니다. Prometheus 버전이 2.43.0 미만이고 Micrometer Tracing을 사용하는
경우 Prometheus를 >= 2.43.0으로 업그레이드하세요. 그렇지 않으면 더 이상 메트릭이 표시되지 않습니다.
Observability in Tests
Spring Boot 3.2 이전에는 통합 테스트를 실행할 때 Micrometer Tracing, Brave 및 OpenTelemetry 인프라가 비활성화되었습니다. 이제 최소한의 빈만 비활성화되어 백엔드로 스팬이
전송되지 않습니다(#35354 참조). 관찰성을 끈 상태에서 통합 테스트를 실행할 때 사용자 정의
Brave SpanHandler
또는 OpenTelemetry SpanExporter
빈이 있으면@ConditionalOnEnabledTracing
으로 주석을 달아야 합니다.
관찰성을 활성화한 상태에서 통합 테스트를 실행하려면 테스트
클래스에 @AutoConfigureObservability
어노테이션을 사용
하세요.
Docker Image Building
Default CNB Builders Upgraded
Maven 및 Gradle 플러그인을 사용하여 이미지를 빌딩할 때 사용되는 기본 CNB 빌더가 변경되었습니다. GraalVM 플러그인이 빌드에 적용된 경우, 새로운 기본 빌더는 paketobuildpacks:
builder-jammy-tiny
입니다. 그렇지 않으면 새로운 기본 빌더는 paketobuildpacks:builder-jammy-base
입니다. 이 빌더에 대한 자세한
정보는 Paketo 문서에서 확인할 수
있습니다.
이전 기본 빌더에는 Ubuntu 18.04를 기반으로 하는 실행 이미지가 포함되었고, 새 기본값에는 Ubuntu 22.04를 기반으로 하는 실행 이미지가 포함됩니다. 즉, 새 기본값으로 빌드된 모든 이미지는
Ubuntu 22.04를 기반으로 합니다.
Docker Host Configuration
spring-boot:build-image
Maven 목표와 bootBuildImage
Gradle 작업은 이제 기본적으로 사용할 Docker 데몬의 호스트 주소 및 기타 연결 세부 정보를 결정하기 위해
Docker
CLI 구성 파일을 사용합니다. 자세한
내용은 Gradle
및 Maven
플러그인 문서를 참조하세요.
Bind Mounts for Caches
CNB 빌더 및 빌드팩이 사용하는 빌드 및 실행 캐시는 이제 이름이 지정된 볼륨 대신 바인드 마운트를 사용하도록 구성할 수 있습니다. 이 기능은 CI 파이프라인에서 볼륨에 액세스할 수 없는 BitBucket CI
사용자에 의해 요청되었습니다. 자세한 내용과
예제는 Maven
및 Gradle
문서를 참조하세요.
Build Workspace Configuration
CNB 빌더 및 빌드팩이 사용하는 임시 빌드 작업 공간은 이제 바인드 마운트 또는 사용자 정의 이름이 지정된 볼륨을 사용하도록 구성할 수 있습니다. 자세한
내용은 Maven
및 Gradle
문서를 참조하세요.
Security Options Configuration
CNB 빌더 컨테이너에 적용되는 보안 옵션은 이제 기본 Linux 보안 옵션 label=disable
을 사용할 수 없는 Docker 환경을 지원하도록 사용자 지정될 수 있습니다. 자세한
내용은 Maven
및
Gradle
문서를 참조하세요.
Spring for GraphQL’s Callable Support
GraphQL용 Spring은 이제 applicationTaskExecutor
를 사용하도록 자동 구성됩니다. 이를 통해 Callable
을 반환하는 컨트롤러 메서드를 바로 지원할 수 있습니다.
Additional OAuth2 Token Validators
자동 구성된 JwtDecoder
또는 ReactiveJwtDecoder
는 이제 OAuth2TokenValidator<Jwt>
빈을 토큰 검증에 사용합니다. 이들은 decoder의 검증기로 구성된DelegatingOAuth2TokenValidator
에 포함됩니다.
Service Connection Support for ActiveMQ
ActiveMQ에 대한 ServiceConnection
지원이 추가되었으며, Testcontainers 및 Docker Compose와의 통합이 포함됩니다. 통합은 symptoma/activemq
이미지를
사용합니다.
Docker Compose Support for Neo4j
Spring Boot의 Docker Compose 통합은 이제 Neo4j를 지원합니다. compose YAML에서 NEO4J_AUTH
환경 변수를 구성하여 인증을 비활성화(값: none
)하거나 neo4j
사용자의
비밀번호를 설정(값: neo4j/your-password
)해야 합니다.
WebSocketServerSpec Configuration
자동 구성에서 사용하는 WebSocketServerSpec
은 spring.rsocket.server.spec
네임스페이스의 속성을 사용하여 사용자 정의할 수 있습니다.
Neo4j AuthTokenManager
AuthTokenManager
빈이 정의되어 있으면 Neo4j와의 인증에 사용됩니다. 이러한 빈은 spring.neo4j.authentication.*
속성보다 우선합니다. 사용자 정의Neo4jConnectionDetails
가 정의된 경우, 예를 들어 Testcontainers 또는 Docker Compose에서 관리하는 데이터베이스에 대한 서비스 연결의 경우 AuthTokenManager
빈은
무시됩니다.
RabbitMQ
SSL Bundle Support
RabbitMQ 연결은 이제 spring.rabbitmq.ssl.bundle
속성을 사용하여 SSL 번들의 신뢰 재료를 사용하도록 구성할 수 있습니다. 이는 기존 spring.rabbitmq.ssl
속성을
사용하여
자바 키스토어 파일로 신뢰 재료를 제공하는 대안을 제공합니다.
Limited Message Body Size
RabbitMQ의 자바 클라이언트의 최신 버전은 기본적으로 들어오는 메시지의 본문 최대 크기를 64MB로 제한합니다. 이 제한을 사용자 정의하기 위해spring.rabbitmq.max-inbound-message-body-size
구성 속성이 도입되었습니다.
Virtual Host Support for RabbitMQ Stream
RabbitMQ Stream에 대한 가상 호스트 지원이 추가되었습니다. RabbitMQ Stream의 가상 호스트는 명시적으로 설정되지 않은 경우 구성된 RabbitMQ의 가상 호스트를 자동으로 사용합니다.
RabbitMQ Stream에 대한 특정 가상 호스트를 사용하려면 spring.rabbitmq.stream.virtual-host
를 설정하세요.
Kafka
SSL Bundle Support
Kafka 연결은 이제 spring.kafka.ssl.bundle
속성을 사용하여 SSL 번들의 신뢰 재료를 사용하도록 구성할 수 있습니다. 이는 기존 spring.kafka.ssl
속성을 사용하여 자바
키스토어
파일로 신뢰 재료를 제공하는 대안을 제공합니다.
Jms Sessions
자동 구성된 JmsTemplate
에서 생성된 세션을 구성하기 위해 새로운 속성이 도입되었습니다:
spring.jms.template.session.acknowledge-mode
spring.jms.template.session.transacted
마찬가지로, 자동 구성된 JmsMessageListenerContainer
에 대해 spring.jms.listener.session.transacted
속성이 도입되었습니다.
이 새로운 속성에 맞추어 기존 spring.jms.listener.acknowledge-mode
속성이 더 이상 사용되지 않으며 spring.jms.listener.session.acknowledge-mode
가
대체로 도입되었습니다.
Connection validation on Oracle UCP datasources
Oracle UCP 데이터소스의 연결 검증에 대한 기본값이 제거되었습니다. 3.2.0-RC1 이전에는 기본적으로 연결 검증이 활성화되었으나, 이제 더 이상 그렇지 않습니다. 연결 검증이 필요한 경우 구성 속성spring.datasource.oracleucp.validate-connection-on-borrow
를 true
로 설정하세요.
testAndDevelopmentOnly Gradle Configuration
developmentOnly
외에도 Spring Boot의 Gradle 플러그인은 이제 testAndDevelopmentOnly
구성을 생성합니다. developmentOnly
와 달리 이 새로운 구성의
종속성은
테스트 컴파일 및 런타임 클래스패스에 포함됩니다. 주로 개발
시 Testcontainers
를 사용하는 애플리케이션을 위해 의도되었습니다.
Miscellaneous
위에 나열된 변경 사항 외에도 많은 작은 조정과 개선이 이루어졌습니다:
- Jackson의
EnumFeature
및JsonNodeFeature
에 선언된 기능은 이제spring.jackson.datatype.enum
및spring.jackson.datatype.jsonnode
구성
속성을 사용하여 활성화 및 비활성화될 수 있습니다. - 추가적인 빌드 정보 속성은 이제
Provider
를 사용하여 지연 값(lazy values)을 가질 수 있습니다. - 트랜잭션 매니저 사용자 정의는 이제
PlatformTransactionManager
뿐만 아니라 모든 유형의TransactionManager
에 적용됩니다. - 모든
TransactionExecutionListener
빈은 이제 자동 구성된 트랜잭션 매니저에 추가됩니다. - 내장된 WebServer가 시작될 때 기록되는 포트 정보가 개선되어 일관성을 갖추었습니다.
- 새로운 속성
spring.servlet.multipart.strict-servlet-compliance
는 멀티파트 처리가multipart/form-data
요청에만 사용되는지 설정합니다. - 웰컴 페이지의 핸들러가 유효하지 않은
Accept
헤더를 받을 때 로깅이 줄어들었습니다. 이제 모든 MIME 유형을 수용하도록 되돌아갑니다. - Spring Boot의 기본값을
RestClient.Builder
에 적용할 수 있는RestClientBuilderConfigurer
가 추가되었습니다. restTemplateBuilderConfigurer
빈은 이제 사용자 정의 빈에 대해 물러나지 않습니다. 자체restTemplateBuilderConfigurer
빈이 있는 경우 제거하십시오.- Jetty 서버의 최대 연결 수를 구성하기 위한 속성이 추가되었습니다.
- PEM SSL 번들을 사용할 때 키를 검증하는 데 사용할 수 있는 새로운 속성이 추가되었습니다.
- 프로그래밍 방식으로
PemSslStoreBundle
을 생성할 때 이제 키 스토어 비밀번호를 제공할 수 있습니다. spring.application.name
은 이제 OpenTelemetry의service.name
에 명시적으로 설정되지 않은 경우 사용됩니다.- OTLP 레지스트리에서 내보낸 메트릭의 기본
TimeUnit
을 구성하기 위한 새로운 속성이 추가되었습니다. - OTLP 메트릭 및 추적에 대한 연결 세부 정보 지원이 이제 제공됩니다. Testcontainers 또는 Docker Compose와 함께
otel/opentelemetry-collector-contrib
이미지를
사용하는 경우 자동으로 연결 세부 정보 빈이 생성됩니다. - Wavefront를 사용할 때 CSP 인증 지원이 추가되었습니다.
flyway.postgresql.transactional-lock
새로운 속성을 사용하여 PostgreSQL에서 Flyway의 트랜잭션 잠금 사용을 구성할 수 있습니다.- Kafka MessageListenerContainer의
changeConsumerThreadName
속성에 대한 지원이 추가되었습니다. - Kafka MessageListenerContainer의
threadNameSupplier
에Function<MessageListenerContainer, String>
빈을 자동 구성합니다. - 가상 스레드 문제를 자동 구성하는 데 도움이 되는 새로운
@ConditionalOnThreading
어노테이션이 도입되었습니다. - RabbitMQ 컨테이너의
forceStop
속성에 대한 지원이 추가되었습니다. WebClient
기반의 Zipkin 송신기는 이제 구성 속성을 통해 설정된 타임아웃을 존중합니다. 자세한
내용은 #36264를 참조하세요.- AOT 모드가 활성화된 상태에서 애플리케이션이 시작되지만 빌드에서 AOT 처리가 수행되지 않은 경우 오류 메시지가 이제 더 명확합니다.
- GraalVM을 사용할 때
messages.properties
및messages_*.properties
에 대한 리소스 힌트가 이제 자동으로 제공됩니다. - Kotlin Serialization에 대한 종속성 관리가 이제 제공됩니다.
- Awaitility(
org.awaitility:awaitility
)는 이제spring-boot-starter-test
의
일부입니다. - 자동 구성된
JdbcClient
빈은 이제@JdbcTest
및@DataJpaTest
를 사용하는 테스트에서 사용할 수 있습니다. MockMvc
를 자동 구성할 때 필터는 이제 등록 빈의 디스패처 유형 및 초기 매개변수를 사용하여 등록됩니다.- Testcontainers는 이제 병렬로 초기화될 수 있습니다. 이를 위해
spring.testcontainers.beans.startup
을parallel
로 설정합니다. - Micrometer 관찰을 지원하기 위한
spring.kafka.template.observation-enabled
속성 지원이 추가되었습니다.
Dependency Upgrades
Spring Boot 3.2.0 moves to new versions of the following Spring projects:
- Spring AMQP 3.1
- Spring Authorization Server 1.2
- Spring Batch 5.1
- Spring Data 2023.1
- Spring Framework 6.1
- Spring HATEOAS 2.2
- Spring Integration 6.2
- Spring Kafka 3.1
- Spring LDAP 3.2
- Spring Pulsar 1.0
- Spring Retry 2.0
- Spring Security 6.2
- Spring Session 3.2
Third-party dependencies have also been updated, the more noteworthy of which are the following:
- Artemis 2.29
- Brave 5.16
- Elasticsearch Client 8.10
- Flyway 9.22
- GraphQL Java 21.1
- Hibernate 6.3
- JUnit 5.10
- Jedis 5.0
- Kafka 3.6
- Kotlin 1.9
- Liquibase 4.24
- Log4j 2.21
- MariaDB 3.2
- Micrometer 1.12
- Micrometer Tracing 1.2
- Mockito 5.4
- Mongo Java Driver 4.11
- MySQL 8.1
- Neo4j Java Driver 5.10
- OkHttp 4.12
- OpenTelemetry 1.28
- Oracle UCP 23.3
- Rabbit AMQP Client 5.18.0
- Rabbit Stream Client 0.11
- Reactor 2023.0
- Selenium 4.14
- SnakeYAML 2.2
Deprecations in Spring Boot 3.2.0
- OkHttp 3 지원이 OkHttp 4를 위해 사용 중지되었습니다.
spring-boot:run
,spring-boot:start
,spring-boot:test-run
Maven 목표의 directories 속성이additionalClasspathElements
를 위해 사용 중지되었습니다.management.metrics.tags.
가 사용 중지되었습니다. 대신management.observations.key-values.
를 사용하세요.LoggingSystemProperties
및LogbackLoggingSystemProperties
에 정의된 대부분의 상수가 enum 값으로 대체되어 사용 중지되었습니다.ClientHttpRequestFactorySettings
및RestTemplateBuilder
에서 요청 버퍼링 활성화 지원이 사용 중지되었습니다. API는 사용 중지된 형태로 남아 있지만, Spring Framework 6.1에서의 유사한 변경으로 구성하는 것은 효과가 없습니다.context.initializer.classes
환경 속성을 사용하여 추가ApplicationContextInitializer
를 등록하는 것은 프로그래밍 방식으로 각 대리자를 등록하거나spring.factories
에 등록하는 것을 위해 사용 중지되었습니다.context.listener.classes
환경 속성을 사용하여 추가ApplicationListener
를 등록하는 것은 프로그래밍 방식으로 각 대리자를 등록하거나spring.factories
에 등록하는 것을 위해 사용 중지되었습니다.- 확장에 의해 관리되는 Flyway 속성들이 전용 네임스페이스로 이동되었습니다. 결과적으로,
flyway.oracle*
속성들은flyway.oracle.*
으로 이동되었습니다. 마찬가지로spring.flyway.sql-server-kerberos-login-file
은spring.flyway.sqlserver.kerberos-login-file
로 이동되었습니다. - InfluxDB에 대한 지원은 새로운 InfluxDB 자바 클라이언트와 그것의 자체 Spring Boot 통합을 위해 사용 중지되었습니다.
management.otlp.metrics.export.resource-attributes
구성 속성이 새로운management.opentelemetry.resource-attributes
를 위해 사용 중지되었습니다.TaskExecutorBuilder
가ThreadPoolTaskExecutorBuilder
를 위해 사용 중지되었습니다.TaskSchedulerBuilder
가ThreadPoolTaskSchedulerBuilder
를 위해 사용 중지되었습니다.spring.jms.listener.concurrency
구성 속성이spring.jms.listener.min-concurrency
로 대체되었습니다.spring.jms.listener.acknowledge-mode
구성 속성이spring.jms.listener.session.acknowledge-mode
로 대체되었습니다.PlatformTransactionManagerCustomizer
가TransactionManagerCustomizer
로 대체되었습니다.TransactionManagerCustomizers(Collection<? extends PlatformTransactionManagerCustomizer<?>>)
가TransactionManagerCustomizers#of(Collection<? extends TransactionManagerCustomizer<?>>)
로 대체되었습니다.DelegatingApplicationContextInitializer
및DelegatingApplicationListener
는 속성 기반 초기화가 더 이상 권장되지 않으므로 사용 중지되었습니다.PemSslStoreBundle
의 일부 오래된 생성자와PemSslStoreDetails
의 인증서 접근자가 사용 중지되었습니다.TaskExecutorCustomizer
가ThreadPoolTaskExecutorCustomizer
를 위해 사용 중지되었습니다.TaskSchedulerBuilder
가ThreadPoolTaskSchedulerBuilder
를 위해 사용 중지되었습니다.TaskSchedulerCustomizer
가ThreadPoolTaskSchedulerCustomizer
를 위해 사용 중지되었습니다.
'IT > Spring' 카테고리의 다른 글
HikariCP 데드락 이슈 (3) | 2024.11.14 |
---|---|
Spring Batch Writer 성능 비교 (0) | 2024.11.13 |
스프링의 트랜잭션 (0) | 2023.10.12 |
Spring AOP 분석 (0) | 2023.10.10 |
RestControllerAdvice 사용하여 로깅 (0) | 2023.09.25 |
댓글