스프링부트 2.1 버전이 10월30일 공식 릴리스 되었다. 이번 글에서는 스프링부트 2.1 버전에 대해서 간략하게 정리한다. 참고로 필자가 관심 있는 내용 중심으로 정리를 하였다.
필자가 잘 모르는 내용은 까알끔하게 패스하였다. 자세한 내용은 공식 릴리스 노트를 확인하길 바란다.
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes
https://spring.io/blog/2018/10/30/spring-boot-2-1-0
혹시라도 제 글에 잘못된 내용이 있다면 피드백 부탁드립니다.
스프링 부트 2.1에서는 스프링 프레임워크 5.1 버전을 사용한다.
스프링 부트의 성능 향상으로 부트 애플리케이션을 좀 더 빠르게 실행할 수 있다. 또한, Spring Data JPA을 사용하는 경우에 아래와 같은 설정으로, 좀 더 빠르게 부트를 실행할 수 있다.
spring.data.jpa.repositories.bootstrap-mode=deferred
해당 설정이 정확히 어떻게 동작하는지 필자가 이해를 하지 못하였다.
스프링프레임워크 5.1 버전을 사용하게 되면서, 스프링프레임워크 5.1 버전에서 지원하는 JDK11(자바11)을 스프링 부트 역시 지원하게 된다.
Spring Data JDBC 에 대한 스타터를 제공한다. Spring Data JDBC 관련해서는 아래 링크를 참고하자.
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-jdbc
https://spring.io/projects/spring-data-jdbc
https://brunch.co.kr/@springboot/105
Spring Data JDBC 는 최근에 발표한 모듈이다. 예전부터 우리가 사용했던 Spring JDBC와 착각하지 않기를 바란다.
스프링 부트 Actuator(액츄에이터)에 신규 엔드포인트가 추가되었다.
/actuator/caches 는 스프링 부트 애플리케이션의 캐시 관리에 대한 정보를 제공한다.
/actuator/integrationgraph provides a graph representation of Spring Integration components
https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/actuator-api/html/
임베디드 서블릿 서버의 버전이 업그레이드되었다.
Tomcat 9
Undertow 2
Jetty 9.4
application.properties에 logging.level.web=debug 를 설정하면 요청, 응답에 대한 로그 정보를 확인할 수 있다.
Micrometer 1.1을 지원하게 되었다. Micrometer1.1을 지원하는 DB에서 스프링부트 Metrics 데이터를 저장하여 사용이 가능하다.
AppOptics
Humio
KariosDB
참고로 필자는 AppOptics,Humio,KariosDB 등은 잘 모르는 제품들이다. 필자가 최근에 검토한 결과 Metrics의 Micrometer 데이터를 InfluxDB에 저장하고 Grafana로 시각화해서 보여주는 방법이 꽤 괜찮았다.
스프링부트 2.0 버전에서 deprecated 된 클래스,메서드, 속성 등이 제거되었다. 부트 2.1 로 업그레이드를 할 때 기존 코드에 deprecated 를 사용하는 코드가 남아있는지 꼼꼼히 확인하길 바란다.
pom.xml 에서 스프링프레임워크 버전설정이 <spring.version>에서 <spring-framework.version> 으로 변경되었다.
스프링 부트를 사용한다면, 굳이 스프링프레임워크 버전을 변경할 필요가 없을 것이다. 스프링부트에 자동으로 추가(디펜던시) 되는 스프링프레임워크 버전을 사용하자.
Lombok 디펜던시가 1.18로 변경되며, 롬복은 더 이상 private, no-args 생성자를 기본으로 만들어주지 않는다. 만약, 기존 기능을 사용하고 싶다면 아래와 같이 설정하면 된다.
lombok.noArgsConstructor.extraPrivate=true
자세한 변경사항은 아래 레퍼런스를 참고하자.
https://projectlombok.org/changelog
스프링 부트 2.1에서는 JUnit 5.2를 정식으로 지원한다.
근데 스프링부트 2.1 프로젝트의 JUnit 기본 디펜던시는 아직 4.12이다. 스프링부트 2.X에서 JUnit5.X 를 사용하는 방법에 대해서는 필자의 글을 참고하길 바란다.
https://brunch.co.kr/@springboot/77
스프링부트2.1에 적용된 @DataJpaTest 어노테이션을 보면 JUnit5의 jupiter 모듈이 추가되었고, @ExtendWith(SpringExtension.class) 이 사용된 것을 확인할 수 있다.
스프링부트2.1 부터는 TaskExecutorBuilder, TaskSchedulerBuilder 클래스가 신규로 추가되었다. 빌더 패턴으로 설정할 수 있다.
Bean Overriding
Servlet Path
Narayana JTA Support
ActiveMQ Pooling
HttpPutFormContentFilter
OAuth2 Client Configuration
Micrometer 'all' SLA Handling
InfluxDB HttpClient Customization
Maven Plugin
Removal of 'spring.provides' Files
Thymeleaf Spring Security Extras
Json Simple
Jersey 1
Hibernate EhCache Support
Endpoint ID names
DataSize Support
Context ApplicationConversionService Support
Profile Expression
Logging Groups
Kafka Streams Support
JMS ConnectionFactory Caching
Elasticsearch REST Clients
OAuth2 WebFlux Support
스프링 부트 2.1 버전에 대해서 간략하게 정리하였다. 필자가 정리한 내용 외에 기타 많은 변경사항이 있다. 공식 릴리스 노트를 반드시 확인하길 바란다.
https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes