Spring Boot 2 Migration (스프링부트 마이그레이션) 검토 내용

Spring Boot Logo

안녕하세요. Spring Boot 2 Migration (스프링부트 마이그레이션) 검토 내용 포스트입니다.
최근 스프링 부트를 시작하신 분들은 관련이 없는 내용이지만, 이전에 개발된 솔루션은 아직 Spring Boot의 Major 버전이 1 인 경우가 많습니다.
운영하는데 아직 무리는 없을 수 있지만, 한번쯤 검토가 필요한 내용이고 업데이트를 하게되면 메이저 버전을 올리다보니 많은 부분이 변경됩니다.

저는 최근 솔루션의 업데이트를 검토할 일이 있었는데, 기왕 하는김에 변경되는 내용에 대해 정리를 한번 해보았습니다.
많은 분들에게 도움이 되는 내용이면 좋겠습니다.

사전 검토사항

  • JDK 1.8 이상
  • Tomcat Version 8.5 이상
    (8.5 버전 이상에서도 에러가 발생하여 9 버전 이상으로 올리는 것을 권장

EmbeddedServletContainerFactory 변경 사항

AS-IS) org.springframework.boot.context.embedded.EmbeddedServletContainerFactory
TO-BE) org.springframework.boot.web.servlet.server.ServletWebServerFactory
패키지의 위치 변경 및 클래스의 이름이 변경되었습니다.

WebMvcConfigurerAdapter 변경 사항

AS-IS) org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
TO-BE) org.springframework.web.servlet.config.annotation.WebMvcConfigurer
패키지의 위치 변경 및 클래스의 이름이 변경되었습니다.

SpringBootServletInitializer 변경 사항

AS-IS) org.springframework.boot.web.support.SpringBootServletInitializer
TO-BE) org.springframework.boot.web.servlet.support.SpringBootServletInitializer
패키지의 위치 변경 및 클래스의 이름이 변경되었습니다.

TomcatEmbeddedServletContainerFactory 변경 사항

AS-IS) org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory
TO-BE) org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
위와 같이 패키지의 위치가 변경되고 클래스의 이름이 변경되었습니다.

SpringApplication().setWebEnvironment() 변경 사항

AS-IS) org.springframework.boot.SpringApplication
TO-BE) org.springframework.boot.WebApplicationType
메소드가 변경되었고, WebApplicationType에 대한 enum이 추가되었습니다.

CRUDRepository() 변경 사항

findOne()

Spring Boot 2 부터 findOne 메소드가 사라지고 findById가 추가되었습니다.
Optional 타입을 리턴하기 때문에 아래와 같은 방법으로 사용하면 됩니다.
AS-IS) repository.findOne(v);
TO-BE) repository.findById(v).get();

delete()

AS-IS)
void delete(Id id)
void delete(T entity)
void delete(Iterable<? extends T> entities)

TO-BE)
void deleteById(ID var1)
void delete(T var1)

Spring Boot 2부터 delete 메소드가 구분이 되어 id 기반의 삭제 메소드 deleteById가 추가되었습니다.

save()

AS-IS)
<S extends T> S save(S entity)
<S extends T> Iterable<S> save(Iterable<S> entities>

TO-BE)
<S extends T> S save(S var1)
<S extends T> Iterable<S> saveAll(Iterable<S> var1

LocalServerPort 변경 사항

Annotation ‘@LocalServerPort’의 패키지 구조가 변경되었습니다.
AS-IS)
org.springframework.boot.context.embeddedLocalServerPort
TO-BE)
org.springframework.boot.web.server.LocalServerPort

new Pageable(page, size) 변경사항

Pageable의 Constructor가 Deprecated되어 사용방법이 변경되었습니다.
AS-IS) new Pageable(page, size)
TO-BE) PageRequest.of(page, size)

이 외에도 변경된 사항은 더 많을텐데, 저에게 해당되는 사항으로 정리된 사항은 여기까지입니다.
더 필요한 내용은 Spring Boot migration 가이드북을 참고하시면 될 것 같습니다.

Updated by 20.12.06 Spring Boot 2 Migration (스프링부트 마이그레이션) 검토 내용
Site : @ThinkGround
Instagram : @thinkground_official
Facebook : @ThinkGround
Twitter : @ThinkG_Flature

Leave a Reply