본문 바로가기
개발/SpringBoot

Spring Boot 2.5 -> 2.6 변경 사항

by Mingvel 2023. 6. 15.

Release Notes


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.versionprometheus-client.version

Embedded Mongo

  • Embedded MongoDB를 사용하려면 반드시 spring.mongodb.embedded.version 프로퍼티를 명시해야 한다

Oracle Database Driver Dependency Management

  • 오라클 DB driver에 대한 의존성 관리가 간소화 되었다
  • com.oracle.ojdbccom.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


@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 되는 클래스가 변경 된다
    • NimbusJwtDecoderSupplierJwtDecoder
    • 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.sessionserver.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
  • Disk Space
    • Micrometer의 DiskSpaceMetrics 가 Auto-configured 된다
  • Task Execution and Scheduling
    • Micrometer의 ExecutorServiceMetrics 가 모든 ThreadPoolTaskExecutor , ThreadPoolTaskScheduler Bean에 Auto-configured 된다
    • ThreadPoolTaskScheduler 가 가용 가능한 경우에, Metric에는 executor의 Bean 이름을 태깅한다
  • Jetty Connection and SSL
    • Micrometer의 JettyConnectionMetrics 이 Auto-configured 된다
    • server.ssl.enabled 프로퍼티가 true 인 경우에도 JettySslHandshakeMetrics 가 Auto-configured 된다
  • 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를 사용할 수 있다
  • Network Configuration
    • network 파라미터로 network driver 설정이 가능해졌다
      • Maven : spring-boot:build-image
      • Gradle : bootBuildImage
  • Cache Configuration
    • Maven , Gradle에서 buildCache , launchCache 설정 파라미터를 이용 해 이미지 생성 시 캐시 레이어의 볼륨 이름을 지정할 수 있다

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.typestream 으로 설저되어 있으면 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


Miscellaneous

  • NoSuchMethodError 의 에러 메세지에 에러가 발생한 클래스 위치에 대한 정보를 포함합니다
  • Lettuce의 ClientResources 를 사용자 지정하도록 ClientResourcesBuilderCustomizer Bean을 정의할 수 있다.
  • FlywaydetectEncoding , 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을 설정할 수 있다
    1. management.metrics.export.stackdriver.resource-labels.* 프로퍼티 사용
  • @EntityScan 어노테이션의 basePackages 를 콤마 베이스로 설정할 수 있다
  • Netty 의 TimeOut 설정을 지원하는 프로퍼티 server.netty.idle-timeout 가 추가 되었다
  • Devtools가 전역 설정을 Load하는 위치를 구성할 수 있다
    1. spring.devtools.home 프로퍼티
    1. 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

  • AbstractDataSourceInitializerDataSourceScriptDatabaseInitializer 로 대체되었다
    • AbstractDataSourceInitializer 의 서브클래스들이 DataSourceScriptDatabaseInitializer 기반 클래스로 대체되었다
  • SpringPhysicalNamingStrategy 이 Hibernate 5.5의 CamelCaseToUnderscoresNamingStrategy 로 대체되었다
  • AbstractApplicationContextRunner 의 세 메서드가 모두 RunnerConfiguration 기반으로 대체되었다
  • SpringApplicationRunListenerstarted , running 메서드가 Duration 을 허용하는 버전으로 대체되었다
  • ApplicationStartedEventApplicationReadyEvent 의 생성자가 Duration 을 허용하는 버전으로 대체되었다
  • EnvironmentEndpoint.sanitize 가 제거 되었다
반응형

댓글