RevFactory 2019. 9. 30. 23:35

Spring Boot 2.2 (Spring Framework 5.2)

 

지난해 10월 Spring Boot 2.1 (Spring Framework 5.1) 릴리즈 이후에 두번째 업데이트입니다.

1년에 하나씩 올라가네요

 

2.0 -> 2.1 때에도 많은 변화가 있었는데요.

이번 2.2 업데이트 역시 많은 기능들이 추가될 것으로 보입니다.

 

일정

Boot 2.2에 적용되는 Spring Framework 5.2가 릴리즈 되었습니다. (2019.09.30)

현재는 Spring Boot 2.2.0.M6 단계이며, RC 이후, 정식 릴리즈는 2019.10.16 으로 예상됩니다.

참고로, Spring Boot 1.x 는 2019.08.06 마지막 으로 더이상 지원하지 않습니다.

 

Key Point

- Performance

- RSocket

- Kotlin (Coroutines)

- JUnit5

 

Spring Framework 5.2

- Realease Notes

- Annotation 검색 최적화, MergeAnnotations 추가

- 코틀린 코루틴 지원, 코틀린 1.3

- XML 또는 Java 구성의 대안으로 람다를 사용한 Bean 등록시 코틀린 DSL 로 가능

- MVC에서도 Router DSL 지원

 

 

- RSocket - RSocketRequester 요청 수행 및 @MessageMapping 로 Response 핸들링

- Spring Data R2DBC (PostgresSQL, MSSQL, H2)

- @Configuration 에 proxyBeanMethods 라는 속성이 추가되어 Lite Mode 를 지원

- io.vavr의 Try에 @Transactional 어노테이션을 지원

- PlatformTransactionManager 등 Reactive Stream Publisher에서 트랜잭션 관리 지원

- 관련된 크롬 버그가 fix되어 MediaType.APPLICATION_JSON_UTF8및MediaType.APPLICATION_PROBLEM_JSON_UTF8 가 deprecated 됨

- Request Mapping, MediaType 분석, CORS 검사 등의 오버 헤드를 줄이기 위해 Spring MVC 및 Spring WebFlux의 성능 개선

- 로깅 관련 logMessage, LogAccessor 등 추가

- JDK 13 Support

 

 

테스트 관련

- Webflux에서 지원하던 테스트 DSL을 WebMVC 에도 확장 지원

- JUnit5 테스트시 @Autowired 대신 생성자로 주입받을 수 있게 됨

  spring.test.constructor.autowire.mode=ALL 설정 또는 테스트 클래스에 @TestConstructor 추가

- JUnit5 가 기본적으로 추가되어 Junit4(org.junit.Test), Junit5(org.junit.jupiter.api.Test) 선택적으로 사용

- @SpringBootTest(args = "--foo=bar") 테스트코드에서 Args 속성을 사용 가능

- OutputCaptureExtension 기능을 통해 capturedOutput 사용 가능

 

 

 

Spring Boot 2.2

- Realease Notes

- RestHighLevelClient 등 개선을 통한 Elasticsearch 지원 강화 (관련문서)

- 초당 처리량 20~30% 증가 및 지연 개선 등 성능 향상

- spring.main.lazy-initialization=true 설정을 통해 Lazy Bean 을 생성하도록 가능해짐

  로딩이 빨라지긴 하지만 http 첫 요청시 느려지고 Bean 에러가 서버 로딩시가 아닌 런타임시에 발견되므로 개발할때만 설정하는 것을 권장

- spring-boot-starter-rsocket 추가 등 RSocket 지원 강화 (Rsocket 데모)

- @EnableConfigurationProperties 으로 properties를 스캔하던 방법대신 @ConfigurationProperties("foo") 와 같은 어노테이션이 추가되어 사용 가능

- Actuator HTTP Trace 비효율적이라 비활성화 되며 Spring Cloud Sleuth 을 권장

- Tomcat의 MBean 레지스트리는 이제 기본적으로 비활성화되어 약 2MB의 힙을 절약

- @RestTemplateBuilder ​​기본 헤더를 추가하고 사용자 정의를 가능하게 하는 메소드 추가

- 비정상적으로 많은 수의 속성을 바인딩 할 때 구성 속성 바인딩 최적화

- JMX 비활성화(default)

 

 

이후.. Spring Framework5.3

 

 

더보기

https://youtu.be/WS8D8-0Pa4I

 

https://youtu.be/BxHqeq58xrE

 

https://youtu.be/3xu5xttCrVk