본문 바로가기

spring

스프링부트 2.2.10에서 2.6.6으로 upgrade

반응형

Spring4Shell의 취약점 발견으로 스프링 core 버젼을 올려야 함.

 

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

 

Spring Framework RCE, Early Announcement

<p><strong>Updates</strong> </p> <ul> <li><strong>[04-04 10:45 BST]</strong> Updated <a href="https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement#am-i-impacted">Am I Impacted</a> with improved description for deployment requirements</

spring.io

 

1.  gradlew upgrade

기존 gradlew 4.x로 낮은 버젼을 사용했다. 스프링부트 2.6.6(스프링 프레임워크 5.3.18)에서는 최소 gradle 6.x대 및 버젼 7을 요구함.

 

2.  annotationProcessor 추가

what is annotationProcessor

gradle 버젼이 올라가면서 annotationProcessor이 등장. Annotation 기반 코드를 Compiler에게 알려줌으로써 처리하는데 도움을 줌.

 

RunTime annotation이 아님.

 

즉, Lombok을 컴파일 하는데 내주적으로 Annotation Proccessing을 통해서 컴파일을 하기때문에 다음과 같이 추가.

 

annotationProcessor group: 'org.projectlombok', name: 'lombok', version: '1.18.12'

 

 

3.  errorController 변경, default-servlet 설정

defalut-servlet이란 앞서 작성된 servlet에서 받은 요청을 처리할 수 없을 경우, default-servlet으로 처리할 수 있음.

 - 사내에서는 errorController로 별도 error 페이지를 보여줌.

 

 

 

버젼을 올리면서 default-servlet 설정을 별도로 해줘야 함.

 

application.properties

server.servlet.register-default-servlet=true

 

errorController 역시 버젼이 올라가면서 override 해야하는 getErrorPath가 사라졌다. 그래도 동작하는데는 문제가 없다.

 

 

4.  objectMapper 변경

objectMapper가 defaultObjectMapper로 변경됨

 

 

5. gradle.build에서 war 작업 skip

Spring boot 2.5 이전에는 war or jar tasks are disabled이라고 명시 되어있음.

 

 

하지만 2.5 이후부터 별도의 설정이 없으면 war, jar 작업이 포함되어 plain-war 또는 plain-jar가 생성.

 

war {
    enabled = false
}

 

REF

https://develop-im.tistory.com/9

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

 

Spring Framework RCE, Early Announcement

<p><strong>Updates</strong> </p> <ul> <li><strong>[04-04 10:45 BST]</strong> Updated <a href="https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement#am-i-impacted">Am I Impacted</a> with improved description for deployment requirements</

spring.io

 

반응형