spring boot 2.2.0 release

들어가기에 앞서

  • 2.2.0.RELEASE 버전은 JNDI 설정에 문제가 있습니다. JNDI를 사용하고 있는 환경의 경우 DB 연결에 문제가있어 배포에 실패하는 현상이 있습니다.
  • 2.2.1.RELEASE 버전에서 위의 문제가 해결되었습니다.

Spring boot 2.2.0 realease 주요 업데이트 사항 정리


JMX now disabled by default

  • jmx가 default로 비활성화 됩니다.
  • jmx를 사용하기 위해서는 spring.jmx.enabled=true property 설정을 해주어야 합니다.

Tomcat Mbean

  • Tomcat MBean registry가 default로 비활성화 됩니다.
  • 비활성화로써, 2MB의 Heap을 절약합니다.

Junit5 지원

  • spring-boot-starter-test 에서 Junit4 → Junit5를 default로 사용합니다.
  • 기존 Junit4 기반 테스트 클래스를 지원하기위해 빈티지 엔진이 포함되어 있습니다.

Hamcrest

  • Hamcrest 2.1 으로 업그레이드 되었습니다.

Elasticsearch

  • Elasticsearch 6.7으로 업그레이드 되었습니다.

Actuator

  • 너무 많은 리소스 소모로 인해 더이상 Actuator의 Http trace, audting 기능이 default로 비활성화 됩니다.

Gradle

  • 최소 Gradle 버전 요구사항 : 4.10+

Logback

  • default rolling date가 7일동안 로그를 유지하도록 업데이트 됩니다.

HttpHiddenMethodFilter

  • HttpHiddenMethodFilter가 default로 비활성화 됩니다.
  • _method request 파라미터를 다루는 필터에서, reqruest body가 선 소모되는 문제를 야기하던 필터가 비활성화 됩니다.

Java13

  • Java13 을 추가지원합니다.
  • Java8, Java11은 계속해서 지원합니다.

성능향상

  • @Configuration에서 proxyBeanMethod=false 의 사용으로 시작시간 및 memory 사용율을 줄일 수 있습니다.
  • (proxyBeanMoethods 는 Spring framework 5.2에서 추가된 새로운 속성으로 @SpringBootApplication, @SpringBootConfiguration에서 사용할 수 있습니다.)
  • Gradle bootRun, Maven spring-boot:run시 JVM은 시작시간 단축을 위해 최적화 하도록 플래그 (-Xverify : none 및 -XX : TieredStopAtLevel = 1)로 구성됩니다.
  • 많은 configuration 속성들을 바인딩하는데 걸리는 시간이 크게 줄었습니다.
  • Jpa, Hibernate의 중복 엔티티 설정사항이 개선되었습니다.
  • Bean이 생성되야 하는 경우에만 auto configuration 되도록 injection points 가 개선되었습니다.

Lazy initialization

  • spring.main.lazy-initialization property 설정을 통해 global lazy initailization이 가능합니다.
  • 해당 기능을 통해 시작 시간을 줄일수 있습니다.
  • 지연 초기화 기능을 사용 하게되면 다음과같은 이슈가 비용이 발생합니다.
  • 지연된 초기화가 발생하는 동안 HTTP 요청 처리에 시간이 오래 걸릴 수 있습니다.
  • 시작시 일반적으로 발생하는 오류는 나중에 초기화가 진행 될때까지 발생하지 않습니다.

TaskExecutor

  • TaskExecutor, TaskScheduler 종료시 동작구성을 할 수 있습니다.

Kubernates

  • ConditionalOnCloudPlatform을통해 kubernates에서 동작하고있는지 확인 할 수 있습니다.

Integration tests

  • SpringBootTest에서 특정 application argumetns를 통한 테스트가 가능합니다.
  • ApplicationArguments bean 설정

@ConfigurationProperties

  • @ConfigurationProperties 이 달린 class는 @EnableConfigurationProperties나 @Component를 사용하는 대신 class 경로 스캔을 통해 찾을 수 있습니다.
  • @SpringBootApplication을 사용하는 경우 @SpringBootApplication annotation이 있는 클래스가 포함된 패키지에 대해 기본적으로 스캔이 사용됩니다.
  • @ConfigurationPropertiesScan을 사용하여 스캔을 수동으로 활성화 하고 스캔된 package를 사용자 정의할 수 있습니다.
  • 생성자 기반의 binding을 지원해 Immutable한 ConfigurationProperties를 제공합니다.

RSocket

  • spring-boot-starter-rsocket이 추가 됩니다.

Spring batch datasource

  • spring batch에서 다중 datasource를 사용하는것을 위해 @BatchDataSoruce 를 통해 Qualified 할 수 있습니다.

Track JDBC

  • JDBC connectino pool total size가 추적이 가능합니다.