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프로퍼티가 제거 되었다- 대신,
FlywayConfigurationCustomizerBean 혹은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→SupplierJwtDecoderReactiveSupplierJwtDecoder
Kafka 3.0
- SpringBoot 2.6에서 Kafka 버전이 3.0으로 업그레이드 되었다
SameSite Cookie Attribute Servlet Support
server.servlet.session.cookie.same-site설정으로SameSiteattribute를 사용할 수 있다
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,ThreadPoolTaskSchedulerBean에 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-keyspring.kafka.ssl.key-store-certificate-chainspring.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
@EndpointBean을 테스트하는 데 사용 되는 신규 어노테이션@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를 사용자 지정하도록ClientResourcesBuilderCustomizerBean을 정의할 수 있다. Flyway의detectEncoding,failOnMissingLocations,ignoreMigrationPatterns의 설정 프로퍼티를 지원한다SpringApplicationBulder가 생성 될 때, 커스텀ResourceLoader를 사용할 수 있다- Auto-configured 된
WebSessionManager에서 사용할 resolver를 사용자 지정하기 위해WebSessionIdResolver를 정의할 수 있다 RSocketConnectorConfigurerBean은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_HOMEEnvironment variable
RabbitTemplateConfigurer의 setter 메서드의 접근 제어가public으로 변경 된다- OpenJ9 에서
heapdump엔드포인트를 지원한다 spring.webflux.multipart.*속성으로 Webflux에서 multipart를 지원한다ContainerCustomizerBean이 Auto-Configured 되는 Spring AMQP의MessageListenerContainer로 변경 된다Jackson의 기본 leniency가spring.jackson.default-leniency속성으로 관리 된다- 배포 통계의 만료 및 버퍼 길이를 구성할 수 있다
- Lettuce에 대한 명령 대기 시간 메트릭이 자동으로 구성 된다
management.metrics.system.diskspace.paths속성으로 Disk 공간 매트릭 경로를 하나 이상 설정할 수 있다RedisStandaloneConfigurationBean을 통해 Redis Auto-Configuration을 제어할 수 있다- H2 콘솔이 auto-configured 되어 있을 때, 가용 가능한 data source의 모든 URL이 로깅 된다
spring.integration.management.default-logging-enabled****신규 속성이 추가 되었고, 이 속성으로 Spring Integration의 기본 로깅 설정을 제어할 수 있다UserDetailsService를 위한 Auto-Configuration이AuthenticationManagerProviderBean의 백그라운드에서 수행 된다
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 |
댓글