개발/Spring

[Spring] Spring Boot v2.6

nova_dev 2022. 10. 17. 00:00
반응형

Spring Boot 2.6 Release Notes · spring-projects/spring-boot Wiki

1. Spring Boot 2.4로부터 Deprecation 된 사항

  • Spring Boot 2.4에서 더 이상 사용되지 않는 클래스, 메서드 및 속성이 이번 릴리스에서 제거됨. 업그레이드하기 전에 더 이상 사용되지 않는 메서드를 호출하지 않는지 확인

2. 기본적으로 금지된 순환참조

이제 기본적으로 빈 간의 순환 참조가 금지됨. BeanCurrentlyInCreationException으로 인해 애플리케이션이 시작되지 않으면 종속성 주기를 중단하도록 구성을 업데이트하는 것이 좋다.

만약 순환 참조 해결이 어렵다면 spring.main.allow-circular-references를 true로 설정한다.

3. Spring MVC를 위한 PathPattern 기반 경로 매칭 전략

등록된 Spring MVC 핸들러 매핑에 대해 요청 경로를 일치시키는 기본 전략이 AntPathMatcher에서 PathPatternParser로 변경됨.

PathPatternParser를 사용할 때 사용자 지정 디스패처 서블릿 경로(spring.mvc.servlet.path)는 지원되지 않는다.

Spring Security를 사용하는 경우 mvcMatchers 사용을 검토하여 Matcher가 계속해서 요구 사항을 충족하는지 확인해야 한다. AntPathMatcher를 사용하면

AuthorizeRequests.mvcMatchers("hello").permitAll()대신 authorizeRequests.mvcMatchers("/hello").permitAll()을 사용해야 한다.

기본값을 AntPathMatcher로 다시 전환해야 하는 경우 spring.mvc.pathmatch.matching-strategy를 ant-path-matcher로 설정한다.

4. Application Startup

ApplicationStartup에 기록된 spring.boot.application.running 시작 단계 spring.boot.application.ready로 이름이 변경됨.

5. Web Resources Configuration

이 구성이 WebProperties에서 조화되었기 때문에 리소스를 직접 주입하는 것은 더 이상 작동하지 않는다. 이 정보에 액세스해야 하는 경우 대신 WebProperties를 주입해야 함

6.Dependency Management 제거

  • org.jboss:jboss-transaction-spi 종속성이 Dependency Management로부터 제거되었으므로 사용한다면 직접 의존성 추가
  • com.nimbusds:oauth2-oidc-sdk 및 com.nimbusds:nimbus-jose-jwt에 대한 종속성 관리가 제거됨. Spring Security를 사용하는 경우 직접 의존성 추가
  • org.webjars:hal-browser 종속성이 의존성 관리로부터 제거되었으므로 필요하면 직접 의존성 추가

7. Embedded Mongo

임베디드 mongo를 사용하려면 이제 spring.mongodb.embedded.version 속성을 설정해야 함.

이렇게 하면 임베디드 지원에서 사용하는 MongoDB 버전이 애플리케이션이 프로덕션에서 사용할 MongoDB 버전과 일치하는지 확인하는 데 도움이 된다.

8. Kafka 3.0

Spring Boot 2.6은 Apache Kafka 3.0으로 업그레이드된다. Kafka 버그로 인해 이러한 변경 사항은 Spring Boot 2.6.5에서 사용되는 Kafka 3.0.1까지 완전히 적용되지 않았다.

  • Kafka 3.0 관련 delivery 기능 참고: intended to enable the strongest delivery guarantees by default
  • Kafka 버그 참고: a Kafka bug
    • 멱등성을 활성화하면 업그레이드 시 ClusterAuthorizationException과 같은 문제가 발생할 수 있다. 멱등성을 비활성화하려면(Kafka 3.0.1 이전의 기본값) 다음 속성을 설정해야 한다.
    • spring.kafka.producer.properties.enable.idempotence=false

9. 최소 요구사항 변경

없음.

10. Java Runtime 정보

info endpoint는 이제 아래 예시와 같이 Java Runtime 정보를 노출합니다.

{
  "java": {
    "vendor": "BellSoft",
    "version": "17",
    "runtime": {
      "name": "OpenJDK Runtime Environment",
      "version": "17+35-LTS"
    },
    "jvm": {
      "name": "OpenJDK 64-Bit Server VM",
      "vendor": "BellSoft",
      "version": "17+35-LTS"
    }
  }
}

info endpoint 응답에서 이 정보를 노출하려면 management.info.java.enabled 속성을 true로 설정합니다.

11. Build Info Property 제외

이제 Spring Boot Maven 또는 Gradle 플러그인에 의해 생성된 build-info.properties 파일에 추가되는 특정 속성을 제외할 수 있다.

Gradle 사용자는 DSL의 속성 블록과 함께 null 값을 사용할 수 있다.

task buildInfo(type: org.springframework.boot.gradle.tasks.buildinfo.BuildInfo) {
    destinationDir project.buildDir
    properties {
        version = null
    }
}

12. Health Group 지원

  • 기본 또는 관리 포트의 추가 경로
    • Health Group은 기본 또는 관리 포트의 추가 경로에서 사용할 수 있다.
    • 이는 보안 목적으로 액추에이터 엔드포인트에 대해 별도의 관리 포트를 사용하는 것이 일반적인 Kubernetes와 같은 클라우드 환경에서 유용하다.
    • 별도의 포트가 있으면 상태 확인에 성공하더라도 기본 응용 프로그램이 제대로 작동하지 않을 수 있으므로 신뢰할 수 없는 상태 확인이 발생할 수 있다.

13. Metrics 지원

  • Application Startup
    • application.started.time: 응용 프로그램을 시작하는 데 걸리는 시간.
    • application.ready.time: 애플리케이션이 요청을 처리할 준비가 되는 데 걸리는 시간입니다.
  • Disk Space
    • Micrometer의 DispSpaceMetrics은 이제 자동 구성된다. [disk.free](http://disk.free)[disk.total](http://disk.total) 메트릭은 현재 working directory로 식별되는 파티션에 대해 제공된다.
  • Task 실행과 Scheduling
    • Micrometer의 ExecutorServiceMetrics 는 이제 모든 ThreadPoolTaskExecutor 및 ThreadPoolTaskScheduler 빈에 대해 자동 구성된다.

14. Docker Image Building 지원

  • Additional Image Tags
    • Maven 및 Gradle 플러그인은 이제 태그 구성 매개변수를 사용하여 빌드한 후 생성된 이미지에 추가 태그 적용을 지원한다. (updated Gradle 참고)
  • 네트워크 구성정보
    • Gradle bootBuildImage 작업에 네트워크 구성 매개변수가 추가됨. 이 매개변수는 Cloud Native Buildpacks 빌더 프로세스를 실행하는 컨테이너에서 사용하는 네트워크 드라이버를 구성하는 데 사용할 수 있다.
  • 캐시 구성
    • Maven 및 Gradle 플러그인은 이제 buildCache 및 launchCache 구성 매개변수를 사용하여 빌드 팩이 빌드된 이미지에 기여한 레이어를 캐시 하는 데 사용되는 볼륨의 이름을 사용자 지정하는 것을 지원함.

15. Redis Connection Pooling

  • Redis(Jedis와 Lettuce 모두)는 이제 commons-pool2가 클래스 경로에 있을 때 풀링을 자동으로 활성화한다.
  • 필요한 경우 풀링을 비활성화하려면 spring.redis.jedis.pool.enabled 또는 spring.redis.lettuce.pool.enabled를 false로 설정한다.

16. Kafka SSL 속성에서 PEM 형식 지원

  • 이전에 Kafka는 SSL용 파일 기반 키 및 신뢰 저장소만 지원했습니다. KIP-651을 사용하면 이제 PEM 형식을 사용할 수 있다.

17. 자동 구성된 Spring Web Service Server Tests

  • 웹 서비스 @Endpoint 빈을 테스트하는 데 사용할 수 있는 새로운 주석 @WebServiceServerTest가 도입되었음.
  • 주석은 @Endpoint 빈을 포함하는 테스트 슬라이스를 생성하고 웹 서비스 엔드포인트를 테스트하는 데 사용할 수 있는 MockWebServiceClient 빈을 자동 구성함.

18. Spring MVC 테스트를 위해 WebTestClient 사용

  • 개발자는 WebTestClient를 사용하여 모의 환경에서 WebFlux 앱을 테스트하거나 라이브 서버에 대해 모든 Spring 웹 앱을 테스트할 수 있다.
  • 이 변경은 또한 모의 환경에서 Spring MVC용 WebTestClient를 활성화한다.
  • @AutoConfigureMockMvc로 주석이 달린 클래스는 WebTestClient를 주입할 수 있다.

19. Dependency 업그레이드

Spring

Thrid-Party

20. Spring Boot 2.6에서 Deprecations 된 사항

  • AbstractDataSourceInitializer는 더 이상 사용되지 않으며 DataSourceScriptDatabaseInitializer를 사용합니다.
  • SpringPhysicalNamingStrategy는 Hibernate 5.5의 CamelCaseToUnderscoresNamingStrategy를 위해 더 이상 사용되지 않습니다.
  • AbstractApplicationContextRunner의 세 가지 메서드는 사용되지 않습니다.
  • SpringApplicationRunListener의 시작 및 실행 메서드는 Duration을 허용하는 버전으로 대체되었습니다.
  • ApplicationStartedEvent 및 ApplicationReadyEvent의 생성자가 Duration을 허용하는 버전으로 대체되었습니다.
  • EnvironmentEndpoint.sanitize는 제거를 위해 더 이상 사용되지 않습니다.
반응형

'개발 > Spring' 카테고리의 다른 글

[Spring] Spring Boot 버전별 차이점  (0) 2022.10.22
[Spring] Spring Boot v2.7  (0) 2022.10.18
[Spring] Spring Boot v2.4  (0) 2022.10.15
[Spring] Spring Boot v2.3  (0) 2022.10.14
[Spring] Spring Boot v2.2  (0) 2022.10.13