카테고리 없음

[Spring] Spring Boot v2.5

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

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

1. SQL 스크립트 데이터 소스 초기화

schema.sql 및 data.sql 스크립트를 지원하는 데 사용되는 기본 방법은 Spring Boot 2.5에서 재설계되었다.

  • schema.sql 및 data.sql 파일
    • 항상 SQL 데이터베이스를 초기화하려면 유형에 관계없이 spring.sql.init.mode를 항상으로 설정한다. 초기화를 비활성화하려면 spring.sql.init.mode를 never로 설정한다.
  • 자격증명
    • 새로운 스크립트 기반 SQL 데이터베이스 초기화는 스키마(DDL) 및 데이터(DML) 변경에 대해 별도의 자격 증명 사용을 지원하지 않는다.
  • Hibernate와 data.sql
    • 기본적으로 data.sql 스크립트는 이제 Hibernate가 초기화되기 전에 실행된다.

2. Spring Data JPA

  • Spring Data JPA는 getOne을 대체하는 새로운 getById 메서드를 도입했다.
  • 애플리케이션에서 LazyLoadingException이 발생하는 경우 기존 getById 메서드의 이름을 getXyzById(여기서 xyz는 임의의 문자열)로 변경한다.

자세한 내용은 updated Spring Data JPA reference documentation를 참조한다.

3. Secure Info Endpoint

  • /info 액츄에이터 엔드포인트는 기본적으로 더 이상 웹을 통해 노출되지 않는다.

4. Spring 통합을 통한 Task Scheduling 조화

Spring Integration은 자동 구성에 의존하는 일반적인 애플리케이션 설정에서 자신을 구성하는 대신 사용 가능한 TaskScheduler를 재사용한다. 즉, Spring Integration이 pool size가 1인 자동 구성된 작업 스케줄러를 사용한다. Spring Integration의 기본값인 10개의 스레드를 복원하려면 spring.task.scheduling.pool.size 속성을 사용한다.

5. Logging Shutdown Hooks

VM이 종료될 때 로깅 리소스가 해제되도록 jar 기반 애플리케이션에 대해 기본적으로 로깅 종료 후크를 등록한다.

대부분의 애플리케이션은 종료 후크가 필요하지만 응용 프로그램에 복잡한 컨텍스트 계층이 있는 경우 비활성화해야 할 수 있다. 이 경우 logging.register-shutdown-hook 속성을 사용한다.

6. Gradle Default jar 와 war Tasks

Spring Boot Gradle 플러그인은 더 이상 표준 Gradle jar 및 war 작업을 자동으로 비활성화하지 않고 이러한 task에 classifier를 적용한다.

이러한 작업을 비활성화하려는 경우 includes updated examples를 참조한다.

bootJar {
    classifier = 'boot'
}

jar {
    classifier = ''
}

만약 일반 아카이브가 전혀 빌드되지 않는 것을 선호한다면 jar task에 아래 작업을 비활성화한다.

jar {
    enabled = false
}

이제 Spring Boot 2.5부터 기본은 enable true임.

7. Groovy 3

Groovy 기본 버전이 3.X로 업그레이드됨.

8. 최소 요구사항 변경

프로젝트는 Gradle 6.8 이상의 버전을 사용하여 빌드해야 함.

9. Hibernate Valiator 6.2

Hibernate Validate의 기본 버전이 6.2.x로 업그레이드됨. Hibernate Validator 6.2는 제약 메시지를 보강하기 위해 표현 언어가 사용되는 방식을 변경한다.

자세한 내용은 this blog post from the Hibernate Validator team를 참고한다.

10. Spring Boot 2.3 및 2.4 Deprecations

Spring Boot 릴리스 호환성 정책을 반영하여 Spring Boot 2.3에서 더 이상 사용되지 않는 코드가 Spring Boot 2.5에서 제거되었음. Spring Boot 2.4에서 더 이상 사용되지 않는 코드는 그대로 유지되며 Spring Boot 2.6에서 제거될 예정.

11. 환경 변수 Prefix

이제 시스템 환경 변수에 접두사를 지정하여 동일한 환경에서 여러 개의 서로 다른 Spring Boot 어플리케이션을 실행할 수 있다. SpringApplication.setEnviromentPrefix(…)로 속성을 바인딩할 때 사용할 prefix를 설정한다.

SpringApplication application = new SpringApplication(MyApp.class);
application.setEnvironmentPrefix("myapp");
application.run(args);

이제 모든 속성에 접두사가 붙은 버전이 필요하다. 예를 들어, 서버 포트를 변경하려면 MYAPP_SERVER_PORT를 설정해야 한다.

12. TCP(h2c)를 통한 HTTP/2

웹 컨테이너는 이제 수동 사용자 지정 없이 TCP(h2c)를 통한 HTTP/2를 지원한다. h2c를 활성화하려면 server.http2.enabled 를 true로 설정하고 server.ssl.enabled를 false(기본값)으로 설정된 상태로 둔다.

13. Java 16 지원

Spring Boot 2.5는 Java 8과 계속 호환되며 Java 16을 지원함.

14. Gradle 7 지원

Spring Boot 2.5는 Gradle 7.0.X 이상에서 지원됨.

15. Dependency 업그레이드

Spring

기타

  • Kotlin 1.5
  • Groovy 3.0
  • Flyway 7.7
  • Liquibase 4.3
  • Jackson 2.12
  • Kafka 2.7
  • Cassandra Driver 4.10
  • Embedded Mongo 3.0
  • Hibernate Validator 6.2
  • Jersey 2.33
  • Mockito 3.7
  • MongoDB 4.2
  • JUnit Jupiter 5.7
  • Elasticsearch 7.12

16. 주목받을만한 Deprecations

  • org.springframework.boot.actuate.endpoint.http의 ActuatorMediaType 및 ApiVersion은 org.springframework.boot.actuate.endpoint의 동등한 항목을 선호
  • jOOQ의 *Provider 콜백 인터페이스 또는 설정을 구현하는 빈에 대한 지원이 더 이상 사용되지 않습니다. 대신 DefaultConfigurationCustomizer를 사용해야 합니다.
  • org.springframework.boot.autoconfigure.data.jpa의 EntityManagerFactoryDependsOnPostProcessor가 org.springframework.boot.autoconfigure.orm.jpa로 재배치되었습니다.
  • spring.artemis.host 및 spring.artemis.port는 더 이상 사용되지 않습니다. 대신 spring.artemis.broker-url을 사용하십시오.
반응형