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가 추적이 가능합니다.