SpringBoot 2.4 버전에서 Deprecated 된 사항들이 모두 제거 된다
Bean의 순환 의존성이 강력하게 제어 된다
- 순환 의존성이 발견되면 application은
BeanCurrentlyInCreationException
을 발생시킨다(default) spring.main.allow-circular-references
프로퍼티로 제어가 가능하다- 혹은
SpringApplication
,SpringApplicationBuilder
의 setter 메서드로 제어가 가능하다
Spring MVC handler mapping 기본 전략이 AntPathMatcher
에서 PathPatternParser
로 변경 된다
- Spring Security, Actuator 사용중이라면 URL 값을 한번 검토해볼 것
Actuator env
InfoContributor 가 기본적으로 Disabled 된다
management.info.env.enabled
속성으로 제어가 가능하다
ApplicationStartup
에 로깅 되는 spring.boot.application.running
의 이름이 spring.boot.application.ready
로 변경 된다
Dependency Management Removals
- JBoss Transaction SPI
org.jboss:jboss-transaction-spi
가 제거 되었다
- Nimbus DS
com.nimbusds:oauth2-oidc-sdk
가 제거 되었다com.nimbusds:nimbus-jose-jwt
가 제거 되었다
- Hal Browser
org.webjars:hal-browser
가 제거 되었다
Prometheus Version Property 변경
prometheus-pushgateway.version
→prometheus-client.version
Embedded Mongo
- Embedded MongoDB를 사용하려면 반드시
spring.mongodb.embedded.version
프로퍼티를 명시해야 한다
Oracle Database Driver Dependency Management
- 오라클 DB driver에 대한 의존성 관리가 간소화 되었다
com.oracle.ojdbc
→com.oracle.database.jdbc
로 업그레이드 가능하다
Vault-related Flyway Properties Removed
- Flyway 7.12 릴리스에서는 Vault 관련 설정이 비공개 소스 확장으로 이전 되었다
spring.flyway.vault-secrets
,spring.flyway.vault-token
,spring.flyway.vault-url
프로퍼티가 제거 되었다- 대신,
FlywayConfigurationCustomizer
Bean 혹은FluentConfigiguration.getExtensionConfiguration
혹은ApiExtension
애서 커스터마이징이 가능하다
WebFlux Session Properties
spring.webflux.session
프로퍼티 그룹이server.reactive.session
그룹으로 변경 된다- 기존 프로퍼티 유지가 가능하나, 마이그레이션을 권장 한다고 한다
Elasticsearch Property Consolidation
- Elasticsearch 관련 프로퍼티 그룹 및 네이밍이 대거 변경된다
- https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.6-Release-Notes#elasticsearch-property-consolidation
@Persistent
no longer considered with Spring Data Couchbase
@Document
어노테이션으로 대체 된다
Records and @ConfigurationProperties
- Java 16의 record 를 사용할 때, 하나의 생성자만 존재할 경우 더이상
ConfigurationProperties
어노테이션을 명시하지 않아도 된다
Deferred OpenID Connect Discovery
spring-security-oauth2-resource-server
를 사용하는 resource server의 auto-configured 되는 클래스가 변경 된다NimbusJwtDecoder
→SupplierJwtDecoder
ReactiveSupplierJwtDecoder
Kafka 3.0
- SpringBoot 2.6에서 Kafka 버전이 3.0으로 업그레이드 되었다
SameSite Cookie Attribute Servlet Support
server.servlet.session.cookie.same-site
설정으로SameSite
attribute를 사용할 수 있다
Reactive Server Session Properties
spring.webflux.session
→server.reactive.session
프로퍼티가 변경 된다- 이제 servlet version과 동등성을 제공한다
Pluggable Sanitization Rules
/env
,/configprops
엔드 포인트의 민감 정보를 sanitize한다SanitizingFunction
@Bean
으로 커스터마이징이 가능하다
Java Runtime Information
info
엔드포인트가 Java Runtime 정보를 제공한다management.info.java.enabled
프로퍼티로 제어가 가능하다
Build Info Property Exclusions
- 특정 프로퍼티가 Maven 또는 Gradle 플러그인에서 생성된 build-info.properties 파일에 추가되지 않도록 제외할 수 있다
Health Support
- Additional Path on Main or Management Port
- 메인 포트와 Management 포트를 분리할 수 있다
- Composite Contributor Include/Exclude Support
- 정규식으로 Health Group을 지정할 수 있다
Metrics Support
- Application Startup
- Application이 시작 되는 데 걸린 시간을 표시해준다 -
application.started.time
- Application이 요청을 받을 수 있는 데 까지 걸린 시간을 표시해준다 -
application.ready.time
- Application이 시작 되는 데 걸린 시간을 표시해준다 -
- Disk Space
- Micrometer의
DiskSpaceMetrics
가 Auto-configured 된다
- Micrometer의
- Task Execution and Scheduling
- Micrometer의
ExecutorServiceMetrics
가 모든ThreadPoolTaskExecutor
,ThreadPoolTaskScheduler
Bean에 Auto-configured 된다 ThreadPoolTaskScheduler
가 가용 가능한 경우에, Metric에는 executor의 Bean 이름을 태깅한다
- Micrometer의
- Jetty Connection and SSL
- Micrometer의
JettyConnectionMetrics
이 Auto-configured 된다 server.ssl.enabled
프로퍼티가true
인 경우에도JettySslHandshakeMetrics
가 Auto-configured 된다
- Micrometer의
- Exporting to the Dynatrace v2 API
Dynatrace v2 API
에 대한 지원이 추가 된다- local OneAgent 을 운영시에,
io.micrometer:micrometer-registry-dynatrace
의존성이 모두 필요하다 - local OneAgent를 운영하지 않을 경우,
management.metrics.export.dynatrace.uri
,management.metrics.export.dynatrace.api-token
프로퍼티는 반드시 설정해 주어야 한다
Docker Image Building Support
- Additional Image Tags
- Maven, Gradle 플러그인에서 image를 생성할 때,
tags
파라미터를 이용해 tag를 사용할 수 있다
- Maven, Gradle 플러그인에서 image를 생성할 때,
- Network Configuration
network
파라미터로 network driver 설정이 가능해졌다- Maven :
spring-boot:build-image
- Gradle :
bootBuildImage
- Maven :
- Cache Configuration
- Maven , Gradle에서
buildCache
,launchCache
설정 파라미터를 이용 해 이미지 생성 시 캐시 레이어의 볼륨 이름을 지정할 수 있다
- Maven , Gradle에서
Auto-configuration for Spring Data Envers
Spring Data Envers
를 위한 Auto-configuration이 제공 된다org.springframework.data:spring-data-envers
의존성에 추가 된다- 기존 코드에서 사용중인 JPA Repository가
RevisionRepository
를 상속 받도록 수정해야 한다
Redis Connection Pooling
- 이제 Redis(Jedis와 Lettuce 모두)는 commons-pool2가 classpath에 있을 때 자동으로 풀링을 활성화한다
Auto-configuration for spring-rabbit-stream
Spring AMQP
의 새로운spring-rabbit-stream
모듈에 대한 Auto-configuration이 추가 되었다spring.rabbitmq.listener.type
이stream
으로 설저되어 있으면StreamListenerContainer
이 Auto-configured 된다spring.rabbitmq.stream.*
속성을 사용하여 브로커에 대한 액세스를 구성할 수 있으며,spring.rabbitmq.listener.stream.native-listener
를 사용하여 네이티브 리스너 지원을 활성화할 수 있다.
Support for PEM format in Kafka SSL Properties
- Kafka SSL에 PEM format을 지원한다
spring.kafka.ssl.key-store-key
spring.kafka.ssl.key-store-certificate-chain
spring.kafka.ssl.trust-store-certificates
Improved Configuration of the Maven Plugin’s Start Goal
Maven
플러그인의 start goal이 command line에서 더 쉽게 구성할 수 있도록 개선되었다
Auto-configured Spring Web Service Server Tests
@Endpoint
Bean을 테스트하는 데 사용 되는 신규 어노테이션@WebServiceServerTest
이 추가되었다
MessageSource-based Interpolation of Bean Validation Messages
- 제약 조건 메세지에서
{parmeters}
를 확인할 때, Application의MessageSource
가 사용 된다 - 이를 통해 application의 messages.properties 파일을 Bean 유효성 검사 메세지에 사용 가능하다
Using WebTestClient for Testing Spring MVC
- WebFlux Application의 mock 테스트를 위한
WebTestClient
에 변화가 생겼다@AutoConfigureMockMvc
어노테이션으로 WebTestClient를 주입 받을 수 있다
Spring Integration PollerMetadata Properties
spring.integration.poller.*
프로퍼티로PollerMetadata
에 대한 설정이 가능하다
Support for Log4j2’s Composite Configuration
- Log4j2의 복합 구성을 지원한다
logging.log4j2.config.override
프로퍼티로 구성이 가능하다
Dependency Upgrades
- Spring Boot 2.6 moves to new versions of several Spring projects:
- Numerous third-party dependencies have also been updated, some of the more noteworthy of which are the following:
- Apache Kafka 3.0
- Artemis 2.19
- Cassandra Driver 4.13
- Commons DBCP 2.9
- Commons Pool 2.11
- Couchbase Client 3.2.2
- Elasticsearch 7.15
- Flyway 8.0.5
- Hibernate 5.6
- JUnit Jupiter 5.8
- Kafka 3.0
- Jedis 3.7
- Kotlin 1.6
- Liquibase 4.5
- Micrometer 1.8
- Mockito 4.0
- MongoDB 4.4
- Postgresql 42.3
- QueryDSL 5.0
- SnakeYAML 1.29
- Thymeleaf Layout Dialect 3.0
Miscellaneous
NoSuchMethodError
의 에러 메세지에 에러가 발생한 클래스 위치에 대한 정보를 포함합니다- Lettuce의
ClientResources
를 사용자 지정하도록ClientResourcesBuilderCustomizer
Bean을 정의할 수 있다. Flyway
의detectEncoding
,failOnMissingLocations
,ignoreMigrationPatterns
의 설정 프로퍼티를 지원한다SpringApplicationBulder
가 생성 될 때, 커스텀ResourceLoader
를 사용할 수 있다- Auto-configured 된
WebSessionManager
에서 사용할 resolver를 사용자 지정하기 위해WebSessionIdResolver
를 정의할 수 있다 RSocketConnectorConfigurer
Bean은RSocketRequester.Builder
에 자동 적용 된다spring-boot-configuration-processor
는@Value
어노테이션으로 명시 된 클래스의 메터데이터를 생성할 수 있다server.tomcat.reject-illegal-header
프로퍼티로 tomcat이 잘못 된 header 정보를 수용할 것인지 여부를 설정할 수 있다Stackdriver
를 사용할 때, monitor resource에 label을 설정할 수 있다-
management.metrics.export.stackdriver.resource-labels.*
프로퍼티 사용
@EntityScan
어노테이션의basePackages
를 콤마 베이스로 설정할 수 있다Netty
의 TimeOut 설정을 지원하는 프로퍼티server.netty.idle-timeout
가 추가 되었다- Devtools가 전역 설정을 Load하는 위치를 구성할 수 있다
-
spring.devtools.home
프로퍼티
-
SPRING_DEVTOOLS_HOME
Environment variable
RabbitTemplateConfigurer
의 setter 메서드의 접근 제어가public
으로 변경 된다- OpenJ9 에서
heapdump
엔드포인트를 지원한다 spring.webflux.multipart.*
속성으로 Webflux에서 multipart를 지원한다ContainerCustomizer
Bean이 Auto-Configured 되는 Spring AMQP의MessageListenerContainer
로 변경 된다Jackson
의 기본 leniency가spring.jackson.default-leniency
속성으로 관리 된다- 배포 통계의 만료 및 버퍼 길이를 구성할 수 있다
- Lettuce에 대한 명령 대기 시간 메트릭이 자동으로 구성 된다
management.metrics.system.diskspace.paths
속성으로 Disk 공간 매트릭 경로를 하나 이상 설정할 수 있다RedisStandaloneConfiguration
Bean을 통해 Redis Auto-Configuration을 제어할 수 있다- H2 콘솔이 auto-configured 되어 있을 때, 가용 가능한 data source의 모든 URL이 로깅 된다
spring.integration.management.default-logging-enabled
****신규 속성이 추가 되었고, 이 속성으로 Spring Integration의 기본 로깅 설정을 제어할 수 있다UserDetailsService
를 위한 Auto-Configuration이AuthenticationManagerProvider
Bean의 백그라운드에서 수행 된다
Deprecation in Spring Boot 2.6.0
AbstractDataSourceInitializer
이DataSourceScriptDatabaseInitializer
로 대체되었다AbstractDataSourceInitializer
의 서브클래스들이DataSourceScriptDatabaseInitializer
기반 클래스로 대체되었다
SpringPhysicalNamingStrategy
이 Hibernate 5.5의CamelCaseToUnderscoresNamingStrategy
로 대체되었다AbstractApplicationContextRunner
의 세 메서드가 모두RunnerConfiguration
기반으로 대체되었다SpringApplicationRunListener
의started
,running
메서드가Duration
을 허용하는 버전으로 대체되었다ApplicationStartedEvent
와ApplicationReadyEvent
의 생성자가Duration
을 허용하는 버전으로 대체되었다EnvironmentEndpoint.sanitize
가 제거 되었다
반응형
'개발 > SpringBoot' 카테고리의 다른 글
(Java/Kotlin)[Spring Security] - Custom Filter를 등록하는 방법 (feat.OncePerRequestFilter) (4) | 2023.11.25 |
---|---|
Spring Boot 2.6 -> 2.7 변경 사항 (0) | 2023.06.19 |
Spring Boot 2.4 -> 2.5 변경 사항 (0) | 2023.06.12 |
Spring Boot 2.3 -> 2.4 변경 사항 (0) | 2023.06.08 |
Spring Boot 3.0 → 3.1 변경 사항 (0) | 2023.06.05 |
댓글