일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 스프링
- angularjs
- 스프링 시큐리티와 앵귤러 js
- rest api
- AUthorization
- spring session
- 예외처리
- api 문서화
- angular
- 스프링부트
- spring boot
- spring
- Exception Handling
- 레디스
- 스프링 세션
- spring security and angularjs
- spring framwork
- 스프링 시큐리티
- 앵귤러
- swagger-ui
- api documentation
- 스웨거
- spring security oauth2
- controlleradvice
- 앵귤러JS
- Spring Framework
- oauth2
- Spring Security
- Authentication
- 스프링 부트
- Today
- Total
스프링부트는 사랑입니다
스프링 부트 3.2 릴리스 노트 본문
Spring Boot 3.1에서 업그레이드
Spring Boot 3.2에서 사용되는 Spring Framework 버전은 더 이상 바이트코드를 파싱하여 매개변수 이름을 유추하려고 시도하지 않습니다. 의존성 주입이나 속성 바인딩에 문제가 발생하는 경우 -parameters 옵션으로 컴파일하고 있는지 다시 확인해야 합니다. 자세한 내용은 "Spring Framework 6.x로 업그레이드" 위키의 이 섹션을 참조하십시오.
기본 로그 출력에는 이제 spring.application.name 속성이 설정된 경우 애플리케이션 이름이 포함됩니다. 이전 형식을 선호하는 경우 logging.include-application-name을 false로 설정할 수 있습니다.
Auto-configured User Details Service
자동 구성된 InMemoryUserDetailsManager는 이제 spring-security-oauth2-client, spring-security-oauth2-resource-server, 및 spring-security-saml2-service-provider 중 하나 이상이 클래스 경로에 있을 때 백업됩니다. 3.2.2 이후로 spring.security.user.name이나 spring.security.user.password가 설정되지 않은 경우에 해당합니다. 유사하게, 반응형 애플리케이션에서 자동 구성된 MapReactiveUserDetailsService는 spring-security-oauth2-client 및 spring-security-oauth2-resource-server 중 하나 이상이 클래스 경로에 있을 때 백업되며, 3.2.2 이후로 spring.security.user.name이나 spring.security.user.password가 설정되지 않았습니다.
위의 종속성 중 하나를 사용하면서도 여전히 애플리케이션에서 InMemoryUserDetailsManager 또는 MapReactiveUserDetailsService가 필요한 경우, 애플리케이션에 필요한 빈을 정의하거나, Spring Boot 3.2.2 및 이후 버전에서 spring.security.user.name과 spring.security.user.password 중 하나 또는 둘 다를 구성해야 합니다.
기본값인 management.otlp.tracing.endpoint가 제거되었습니다. OtlpHttpSpanExporter 빈은 이제 management.otlp.tracing.endpoint에 값이 있을 때만 자동 구성됩니다. 이전 동작을 복원하려면 management.otlp.tracing.endpoint=http://localhost:4318/v1/traces로 설정하십시오.
Spring Boot는 이제 기본적으로 H2의 버전 2.2를 사용합니다. 이전 H2 버전의 데이터베이스를 계속 사용하려면 데이터 마이그레이션이 필요할 수 있습니다. 업그레이드하기 전에 SCRIPT 명령을 사용하여 데이터베이스를 내보내십시오. 새로운 H2 버전으로 빈 데이터베이스를 생성한 다음 RUNSCRIPT 명령을 사용하여 데이터를 가져오십시오.
Oracle UCP DataSource
Oracle UCP 데이터소스는 더 이상 기본적으로 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 버전의 오버라이드를 제거하십시오.
Jetty 11과 Jetty 12 간의 상당한 API 차이로 인해 Jetty 11은 더 이상 내장 웹 서버로 지원되지 않습니다.
Kotlin Gradle 플러그인 1.9.0에는 추가 리소스 디렉토리가 손실되는 버그가 있습니다. 이로 인해 AOT 처리를 통해 생성된 리소스가 네이티브 이미지의 클래스 경로에 포함되지 않아 네이티브 이미지 컴파일이 중단됩니다. 문제를 우회하려면 Kotlin의 Gradle 플러그인을 먼저 적용하십시오.
가능한 한 이전 구현을 투명하게 대체하기 위해 모든 노력을 기울였습니다. 대부분의 사용자가 변경 사항을 느끼지 못할 것으로 예상합니다. 사용자가 변경 사항을 느낄 수 있는 한 가지 영역은 런처 클래스를 직접 참조한 경우이며, 이 경우 새 기본 런처에서 새로운 이름이 있습니다.
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.PropertiesLauncher | org.springframework.boot.loader.WarLauncher |
새 구현에서 문제가 발견되면, 이전 코드를 사용할 수 있는 폴백 옵션을 제공합니다.
bootJar.loaderImplementation을 org.springframework.boot.loader.tools.LoaderImplementation.CLASSIC으로 설정할 수 있습니다. 예를 들어:
groovy
Copy code
bootJar {
loaderImplementation = org.springframework.boot.loader.tools.LoaderImplementation.CLASSIC
}
Maven 사용자의 경우 spring-boot-plugin 구성에서 <loaderImplementation> 태그를 CLASSIC으로 설정할 수 있습니다. 예를 들어:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>repackage</id>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<loaderImplementation>CLASSIC</loaderImplementation>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Spring Boot 3.0에서 사용 중단된 클래스, 메서드 및 속성은 이번 릴리스에서 제거되었습니다. 업그레이드하기 전에 사용 중단된 메서드를 호출하고 있지 않은지 확인하십시오.
New and Noteworthy
Spring for Apache Pulsar support
Spring Boot는 이제 Spring for Apache Pulsar 프로젝트에 대한 자동 구성 지원 및 스타터 POM을 포함합니다. 전체 세부정보는 업데이트된 참조 문서를 참조하십시오.
Spring Boot는 이제 Micrometer 추적을 사용할 때마다 자동으로 상관 ID를 로그에 기록합니다. 자세한 내용은 업데이트된 문서를 참조하십시오.
직접 추적 ID 및 스팬 ID를 로그하도록 구성한 경우(예: 다음과 같은 설정):
logging.pattern.level=%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]
이제 이를 제거할 수 있습니다. 애플리케이션 이름, 추적 ID 및 스팬 ID가 기본적으로 포함됩니다.
Spring Boot 3.2는 Spring Framework 6.1에서 도입된 새로운 RestClient 인터페이스에 대한 지원을 포함합니다. 이 인터페이스는 WebClient와 유사한 디자인의 기능적 스타일의 차단 HTTP API를 제공합니다.
기존 및 신규 애플리케이션은 RestTemplate의 대안으로 RestClient 사용을 고려할 수 있습니다. 자세한 내용은 업데이트된 참조 문서를 참조하십시오.
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));
}
NamedParameterJdbcTemplate의 존재를 기반으로 JdbcClient에 대한 자동 구성이 추가되었습니다. 후자가 자동 구성되면 spring.jdbc.template.* 속성이 고려됩니다.
Spring Boot 3.2는 가상 스레드 지원을 제공합니다. 가상 스레드를 사용하려면 Java 21에서 실행하고 spring.threads.virtual.enabled 속성을 true로 설정해야 합니다.
가상 스레드가 활성화되면 Tomcat과 Jetty는 요청 처리에 가상 스레드를 사용합니다. 이는 웹 요청을 처리하는 애플리케이션 코드(예: 컨트롤러의 메서드)가 가상 스레드에서 실행됨을 의미합니다.
Spring WebFlux의 차단 실행에 대한 지원은 AsyncTaskExecutor인 경우 applicationTaskExecutor 빈을 사용하도록 자동 구성됩니다. applicationTaskExecutor는 기본적으로 및 가상 스레드가 활성화될 때 모두 AsyncTaskExecutor입니다.
가상 스레드가 활성화되면 applicationTaskExecutor 빈은 가상 스레드를 사용하도록 구성된 SimpleAsyncTaskExecutor가 됩니다. @Async 메서드를 호출할 때 @EnableAsync와 같이 application task executor를 사용하는 모든 곳에서 Spring MVC의 비동기 요청 처리 및 Spring WebFlux의 차단 실행 지원이 이제 가상 스레드를 활용합니다. 이전과 같이, 모든 TaskDecorator 빈은 자동 구성된 실행기에 적용되며, spring.task.execution.thread-name-prefix 속성이 적용됩니다. 다른 spring.task.execution.* 속성은 풀 기반 실행기에 특정하므로 무시됩니다.
SimpleAsyncTaskExecutorBuilder가 이제 애플리케이션 컨텍스트에 제공되며, 이를 사용하여 SimpleAsyncTaskExecutor를 빌드할 수 있습니다. SimpleAsyncTaskExecutorCustomizer 빈을 사용하여 빌드된 SimpleAsyncTaskExecutor를 사용자 정의할 수 있습니다. 가상 스레드가 활성화되면 빌더는 자동으로 이를 사용하도록 구성됩니다.
가상 스레드가 활성화되면 taskScheduler 빈은 가상 스레드를 사용하도록 구성된 SimpleAsyncTaskScheduler가 됩니다. spring.task.scheduling.thread-name-prefix 속성과 spring.task.scheduling.simple.* 속성이 적용됩니다. 다른 spring.task.scheduling.* 속성은 풀 기반 스케줄러에 특정하므로 무시됩니다.
SimpleAsyncTaskSchedulerBuilder가 이제 애플리케이션 컨텍스트에 제공되며, 이를 사용하여 SimpleAsyncTaskScheduler를 빌드할 수 있습니다. SimpleAsyncTaskSchedulerCustomizer 빈을 사용하여 빌드된 SimpleAsyncTaskScheduler를 사용자 정의할 수 있습니다. 가상 스레드가 활성화되면 빌더는 자동으로 이를 사용하도록 구성됩니다.
spring.main.keep-alive라는 새로운 속성이 추가되었습니다. 이를 true로 설정하면 모든 다른 스레드가 가상 스레드(또는 데몬 스레드)일지라도 JVM이 살아 있습니다.
-
- RabbitMQ 리스너에 대해 가상 스레드 실행기가 자동 구성됩니다.
- Kafka 리스너에 대해 가상 스레드 실행기가 자동 구성됩니다.
- Spring Data Redis의 ClusterCommandExecutor는 가상 스레드를 사용합니다.
- Spring for Apache Pulsar는 자동 구성된 ConcurrentPulsarListenerContainerFactory와 DefaultPulsarReaderContainerFactory에 대해 VirtualThreadTaskExecutor를 사용합니다.
Spring Boot 3.2는 JVM 체크포인트 복원(Project CRaC)에 대한 초기 지원을 제공합니다. 자세한 내용은 관련 문서를 참조하십시오.
SSL 번들은 신뢰 자료가 변경될 때 자동으로 다시 로드될 수 있습니다. 번들이 이 기능을 사용하려면 reload-on-update 속성을 true로 설정해야 합니다. 번들의 사용자는 리로딩을 지원해야 합니다.
리로딩을 지원하는 사용자는 다음과 같습니다:
- Netty 웹 서버
- Tomcat 웹 서버
SSL 번들 리로딩에 대한 더 자세한 정보는 참고 문서에서 찾을 수 있습니다.
Observability Improvements
이제 Micrometer의 @Timed, @Counted, @NewSpan, @ContinueSpan, @Observed 어노테이션을 사용할 수 있습니다. 이러한 어노테이션에 대한 에스펙트는 AspectJ가 클래스패스에 있을 때 자동으로 구성됩니다.
Micrometer Tracing의 ObservationHandler 빈은 이제 ObservationConfig에 자동으로 등록됩니다. Spring Boot 3.2.0 이전에는 범주화되지 않은 핸들러가 범주화된 핸들러보다 먼저 등록되었습니다. 이 순서가 변경되어, 이제 범주화된 핸들러가 범주화되지 않은 핸들러보다 먼저 등록됩니다. 자세한 내용은 #34399를 참조하세요.
B3 트레이스 전파의 기본 형식이 single-no-parent에서 single로 변경되었습니다.
@Scheduled 메서드는 이제 관찰 가능성을 위해 계측됩니다.
R2DBC에 대한 관찰 가능성이 추가되었습니다. 이를 활성화하려면 프로젝트에 io.r2dbc:r2dbc-proxy 종속성을 포함하세요.
특정 접두사로 시작하는 관찰은 프로퍼티를 통해 비활성화할 수 있습니다. 예를 들어, Spring Security가 관찰을 보고하지 않도록 하려면 management.observations.enable.spring.security=false로 설정하세요.
management.observations.key-values.* 프로퍼티는 모든 관찰에 낮은 카드 수의 키-값을 자동으로 적용하는 데 사용할 수 있습니다. 예를 들어, management.observations.key-values.region=us-west를 설정하면 모든 관찰에 region 키와 us-west 값이 추가됩니다.
OpenTelemetry
OpenTelemetry에 대한 자동 구성 기능이 개선되었습니다. 만약 컨텍스트에 SdkLoggerProvider 또는 SdkMeterProvider 유형의 빈이 있다면, 자동으로 OpenTelemetry 빈에 등록됩니다. 또한, OpenTelemetry의 Resource가 이제 빈으로 노출되며, management.opentelemetry.resource-attributes라는 새로운 구성 속성이 추가되어 리소스 속성을 구성할 수 있습니다.
OpenTelemetry를 사용 중이며 적용된 SpanProcessor에 대한 더 많은 제어를 원할 경우, 이제 SpanProcessors 유형의 빈을 정의할 수 있습니다. 기본적으로 사용 가능한 모든 SpanProcessor 빈이 적용됩니다. 동일하게, OpenTelemetry의 SpanExporter도 SpanExporters 빈을 사용해 기본 설정을 덮어쓸 수 있습니다. 기본적으로는 사용 가능한 모든 SpanExporter 빈이 적용됩니다.
Micrometer 1.12에는 Prometheus 2.43 이상이 필요한 Exemplar 지원을 확장하는 기능이 포함되어 있습니다. 만약 Micrometer Tracing을 사용하고 있고 Prometheus 버전이 2.43.0보다 낮다면, Prometheus를 2.43.0 이상으로 업그레이드해야 합니다. 그렇지 않으면 메트릭이 더 이상 표시되지 않습니다.
Spring Boot 3.2 이전에는 통합 테스트를 실행할 때 Micrometer Tracing, Brave, OpenTelemetry 인프라 전체가 비활성화되었습니다. 이 부분이 재작업되어 이제는 최소한의 빈만 비활성화되어 스팬이 백엔드로 전송되지 않도록 합니다(비활성화될 빈 목록은 #35354를 참조하세요). 만약 사용자 정의 Brave SpanHandler 또는 OpenTelemetry SpanExporter 빈이 있다면, 통합 테스트를 실행할 때 관찰 가능성이 비활성화된 상태에서 생성되지 않도록 @ConditionalOnEnabledTracing 어노테이션을 추가해야 합니다.
관찰 가능성을 활성화한 상태에서 통합 테스트를 실행하고 싶다면, 테스트 클래스에 @AutoConfigureObservability 어노테이션을 사용할 수 있습니다.
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
CNB 빌더와 빌드팩에서 사용되는 빌드 및 실행 캐시는 이제 명명된 볼륨 대신 바인드 마운트를 사용하도록 구성할 수 있습니다. 이 기능은 CI 파이프라인에서 볼륨 접근을 허용하지 않는 BitBucket CI 사용자들의 요청에 의해 추가되었습니다. 자세한 내용과 예시는 Maven 및 Gradle 문서를 참조하세요.
CNB 빌더와 빌드팩에서 사용되는 임시 빌드 작업 공간은 이제 바인드 마운트나 사용자 지정된 명명된 볼륨을 사용하도록 구성할 수 있습니다. 자세한 내용과 예시는 Maven 및 Gradle 문서를 참조하세요.
Spring for GraphQL은 이제 applicationTaskExecutor를 사용하도록 자동 구성됩니다. 이를 통해 Callable을 반환하는 컨트롤러 메서드에 대한 기본 지원이 가능합니다.
자동으로 구성된 JwtDecoder 또는 ReactiveJwtDecoder는 이제 OAuth2TokenValidator<Jwt> 빈을 사용하여 토큰을 검증합니다. 이러한 검증기는 DelegatingOAuth2TokenValidator에 포함되어 디코더의 검증기로 구성됩니다.
Service Connection Support for ActiveMQ
Docker Compose Support for Neo4j
자동 구성에서 사용되는 WebSocketServerSpec은 spring.rsocket.server.spec 네임스페이스의 프로퍼티를 사용하여 사용자 지정할 수 있습니다.
Neo4j AuthTokenManager
AuthTokenManager 빈이 정의된 경우, Neo4j의 인증에 사용됩니다. 이러한 빈은 spring.neo4j.authentication.* 프로퍼티보다 우선합니다. 만약 Testcontainers 또는 Docker Compose 관리 데이터베이스에 대한 서비스 연결을 위한 사용자 지정 Neo4jConnectionDetails가 정의되어 있는 경우, AuthTokenManager 빈은 무시됩니다.
SSL Bundle Support
RabbitMQ 연결은 이제 spring.rabbitmq.ssl.bundle 프로퍼티를 사용하여 SSL 번들에서 SSL 신뢰 자료를 사용할 수 있도록 구성할 수 있습니다. 이는 기존의 spring.rabbitmq.ssl 프로퍼티를 사용해 Java 키스토어 파일로 신뢰 자료를 제공하는 것에 대한 대안입니다.
Limited Message Body Size
자동 구성된 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로 설정하세요.
developmentOnly에 추가로, Spring Boot의 Gradle 플러그인은 이제 testAndDevelopmentOnly 구성을 생성합니다. 이 새로운 구성의 종속성은 테스트 컴파일 및 런타임 클래스패스에 포함됩니다. 주로 개발 시 Testcontainers를 사용하는 애플리케이션을 위한 것입니다.
Miscellaneous
- 위에 나열된 변경 사항 외에도 많은 소규모 조정과 개선 사항이 포함되었습니다:
- Jackson의 EnumFeature와 JsonNodeFeature에서 선언된 기능을 각각 spring.jackson.datatype.enum. 및 spring.jackson.datatype.jsonnode. 구성 프로퍼티를 사용하여 활성화 및 비활성화할 수 있습니다.
- 추가적인 빌드 정보 프로퍼티는 이제 Provider를 사용하여 지연된 값을 가질 수 있습니다.
- 트랜잭션 관리자 사용자 정의는 이제 PlatformTransactionManager뿐만 아니라 모든 종류의 TransactionManager에 적용됩니다.
- 모든 TransactionExecutionListener 빈이 자동으로 구성된 트랜잭션 관리자에 추가됩니다.
- 내장된 WebServer가 시작될 때 기록되는 포트 정보가 개선되고 더 일관성 있게 변경되었습니다.
- 새로운 프로퍼티 spring.servlet.multipart.strict-servlet-compliance는 멀티파트 처리 기능이 멀티파트/폼 데이터 요청에만 사용되는지를 설정합니다.
- 잘못된 Accept 헤더를 수신한 환영 페이지 처리기의 로깅이 감소하여 모든 MIME 유형을 수락하도록 기본 처리합니다.
- RestClientBuilder에 Spring Boot의 기본값을 적용할 수 있는 RestClientBuilderConfigurer가 추가되었습니다.
- restTemplateBuilderConfigurer 빈이 사용자 정의 빈에 의해 더 이상 백업되지 않습니다. 사용자 정의 restTemplateBuilderConfigurer 빈을 사용했다면 이를 제거하세요.
- Jetty 서버의 최대 연결 수를 구성할 수 있는 프로퍼티가 추가되었습니다.
- PEM SSL 번들을 사용할 때 키를 검증할 수 있는 새로운 프로퍼티가 추가되었습니다.
- PemSslStoreBundle을 프로그래밍 방식으로 생성할 때, 키 스토어 비밀번호를 제공할 수 있습니다.
- spring.application.name이 명시적으로 설정되지 않은 경우, OpenTelemetry의 service.name으로 사용됩니다.
- OTLP 레지스트리에서 내보낸 메트릭의 기본 TimeUnit을 구성할 수 있는 새로운 프로퍼티가 추가되었습니다.
- OTLP 메트릭 및 추적에 대한 연결 세부 정보 지원이 추가되었습니다. otel/opentelemetry-collector-contrib 이미지를 사용하는 경우 자동으로 연결 세부 정보 빈이 생성됩니다.
- Wavefront를 사용할 때 CSP 인증 지원이 추가되었습니다.
- PostgreSQL에서 Flyway의 트랜잭션 잠금 사용을 구성할 수 있는 새로운 프로퍼티 flyway.postgresql.transactional-lock이 추가되었습니다.
- 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의 일부입니다.
- @JdbcTest 및 @DataJpaTest를 사용하는 테스트에서 자동으로 구성된 JdbcClient 빈을 사용할 수 있습니다.
- MockMvc를 자동으로 구성할 때, 필터는 등록 빈에서 가져온 디스패처 타입과 초기화 매개변수를 사용하여 등록됩니다.
- Testcontainers를 병렬로 초기화할 수 있게 되었습니다. 이를 위해 spring.testcontainers.beans.startup을 parallel로 설정하세요.
- Micrometer 관찰을 지원하기 위한 spring.kafka.template.observation-enabled 프로퍼티에 대한 지원이 추가되었습니다.
Spring Boot 3.2.0은 다음 Spring 프로젝트의 새로운 버전으로 이동했습니다:
- 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
- Spring Boot 3.2.0에서의 사용 중단(deprecations) 사항은 다음과 같습니다:
- OkHttp 3 지원: OkHttp 4로 대체되며, OkHttp 3에 대한 지원이 중단되었습니다.
- spring-boot, spring-boot, spring-bootMaven 목표의 directories 속성: 이 속성은 추가 클래스 경로 요소(additionalClasspathElements)로 대체되었습니다.
- LoggingSystemProperties와 LogbackLoggingSystemProperties에 정의된 대부분의 상수: Enum 값으로 대체되며, 기존 상수는 사용 중단되었습니다.
- ClientHttpRequestFactorySettings와 RestTemplateBuilder의 요청 버퍼링 지원: Spring Framework 6.1과의 유사한 변경 사항에 따라 API는 사용 중단 상태로 유지되지만, 설정 시 더 이상 효과가 없습니다.
- context.initializer.classes 환경 속성을 사용한 추가 ApplicationContextInitializer 등록: 각 위임자를 프로그래밍 방식으로 또는 spring.factories에서 등록하는 것이 권장됩니다.
- context.listener.classes 환경 속성을 사용한 추가 ApplicationListener 등록: 각 위임자를 프로그래밍 방식으로 또는 spring.factories에서 등록하는 것이 권장됩니다.
- Flyway 속성 변경: 확장 프로그램에 의해 관리되는 Flyway 속성이 전용 네임스페이스로 이동했습니다. 예를 들어, flyway.oracle* 속성은 flyway.oracle.*로, spring.flyway.sql-server-kerberos-login-file은 spring.flyway.sqlserver.kerberos-login-file로 이동되었습니다.
- InfluxDB 지원: 새로운 InfluxDB Java 클라이언트 및 전용 Spring Boot 통합을 사용하기 위해 InfluxDB 지원이 중단되었습니다.
- 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로 대체되었습니다.
- TaskSchedulerCustomizer: ThreadPoolTaskSchedulerCustomizer로 대체되었습니다.
- NettyWebServer의 일부 구식 생성자: 사용 중단되었습니다.
'ReleaseNotes' 카테고리의 다른 글
스프링 부트 3.3 릴리스 노트 (0) | 2024.10.26 |
---|---|
스프링 부트 3.1 릴리스 노트 (3) | 2024.10.18 |
스프링 부트 3.0 릴리즈 노트 (0) | 2024.10.18 |
스프링 부트 1.5 릴리즈 노트 (0) | 2017.07.21 |
스프링 부트 1.4 릴리즈 노트 (0) | 2016.08.06 |