brunch

You can make anything
by writing

C.S.Lewis

by 에디의 기술블로그 Nov 03. 2018

스프링 부트 2.1.RELEASE

스프링부트 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

혹시라도 제 글에 잘못된 내용이 있다면 피드백 부탁드립니다.  


Spring Boot 2.1



Spring Framework 5.1

스프링 부트 2.1에서는 스프링 프레임워크 5.1 버전을 사용한다.


Performance improvements

스프링 부트의 성능 향상으로 부트 애플리케이션을 좀 더 빠르게 실행할 수 있다. 또한, Spring Data JPA을 사용하는 경우에 아래와 같은 설정으로, 좀 더 빠르게 부트를 실행할 수 있다. 

spring.data.jpa.repositories.bootstrap-mode=deferred

해당 설정이 정확히 어떻게 동작하는지 필자가 이해를 하지 못하였다.


JDK 11

스프링프레임워크 5.1 버전을 사용하게 되면서, 스프링프레임워크 5.1 버전에서 지원하는 JDK11(자바11)을 스프링 부트 역시 지원하게 된다.


Spring Data JDBC 

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와 착각하지 않기를 바란다. 


Spring Actuator Endpoints

스프링 부트 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/


Servlet Containers

임베디드 서블릿 서버의 버전이 업그레이드되었다. 

Tomcat 9

Undertow 2

Jetty 9.4


Logging Refinements

application.properties에 logging.level.web=debug 를 설정하면 요청, 응답에 대한 로그 정보를 확인할 수 있다. 


Metrics

Micrometer 1.1을 지원하게 되었다. Micrometer1.1을 지원하는 DB에서 스프링부트 Metrics 데이터를 저장하여 사용이 가능하다.

AppOptics

Humio

KariosDB

참고로 필자는 AppOptics,Humio,KariosDB 등은 잘 모르는 제품들이다. 필자가 최근에 검토한 결과 Metrics의 Micrometer 데이터를 InfluxDB에 저장하고 Grafana로 시각화해서 보여주는 방법이 꽤 괜찮았다. 


Deprecations from Spring Boot 2.0

스프링부트 2.0 버전에서 deprecated 된 클래스,메서드, 속성 등이 제거되었다. 부트 2.1 로 업그레이드를 할 때 기존 코드에 deprecated 를 사용하는 코드가 남아있는지 꼼꼼히 확인하길 바란다. 

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes#deprecations-in-spring-boot-21


Spring Version POM Property

pom.xml 에서 스프링프레임워크 버전설정이  <spring.version>에서 <spring-framework.version> 으로 변경되었다. 

https://github.com/spring-projects/spring-boot/blob/v2.1.0.RELEASE/spring-boot-project/spring-boot-dependencies/pom.xml


스프링 부트를 사용한다면, 굳이 스프링프레임워크 버전을 변경할 필요가 없을 것이다. 스프링부트에 자동으로 추가(디펜던시) 되는 스프링프레임워크 버전을 사용하자. 


Lombok 1.18

Lombok 디펜던시가 1.18로 변경되며, 롬복은 더 이상 private, no-args 생성자를 기본으로 만들어주지 않는다. 만약, 기존 기능을 사용하고 싶다면 아래와 같이 설정하면 된다.

lombok.noArgsConstructor.extraPrivate=true

자세한 변경사항은 아래 레퍼런스를 참고하자.

https://projectlombok.org/changelog


JUnit 5.2

스프링 부트 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) 이 사용된 것을 확인할 수 있다. 

@DataJpaTest

https://github.com/spring-projects/spring-boot/blob/v2.1.0.RELEASE/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTest.java#L56


Task Execution, Scheduling 

스프링부트2.1 부터는 TaskExecutorBuilder, TaskSchedulerBuilder 클래스신규로 추가되었다. 빌더 패턴으로 설정할 있다. 

https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/api/org/springframework/boot/task/TaskExecutorBuilder.html

https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/api/org/springframework/boot/task/TaskSchedulerBuilder.html


기타 변경 사항 모음

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


기타 잡다한 변경사항

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes#miscellaneous


정리

스프링 부트 2.1 버전에 대해서 간략하게 정리하였다. 필자가 정리한 내용 외에 기타 많은 변경사항이 있다. 공식 릴리스 노트를 반드시 확인하길 바란다.

https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes

작가의 이전글 [자문자답]1번째 퍼즐
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari