회사 프로젝트 프레임워크로 Spring boot 3 채택! 하지만 Thymeleaf 에 대한
팀원들의 숙련도가 낮았기때문에 Servlet 기술(JSP, JSTL, Tiles 등)를 활용하기로 했다.
하지만 Spring 6 에서 Servlet 기술들은 지원종료됐다는 사실을 모른 채, 하루종일 열나게 삽질했다.
삽질하고 이 글을 읽어보니 개발자가 패치노트를 항상 꾸준히 봐야하는 이유를 절실히 체감한다.
사실 이 덕분에 코딩이 더 재밌어졌고 앞으로도 더욱 재미있어질 것 같다.
Spring 5.x -> 6.0 변경사항
- JAVA 17기반으로 변경
- 일부 JAVA EE API 지원 종료
- XML이 점차적으로 Spring에서는 사라질 예정이다.
- RPC 지원 종료
- 새로운 AOT 엔진 도입
- @Inject 같은 JSR에서 지원하던 어노테이션들이 jakarta.annotaion 패키지의 어노테이션으로 변경
- HttpMethod가 enum에서 class로 변경
- Jakarta EE 9+로의 마이그레이션으로 인한 변경
- Hibernate ORM 5.6.x 버전부터 hibernate-core-jakarta 사용
- javax.persistence에서 jakarta.persistence로 변경
- Tomcat 10, Jetty 11, Undertow 2.2.14 (undertow-servlet-jakarta도 포함)으로 업그레이드 필요
- javax.servlet에서 jakarta.servlet으로 변경 필요 (import)
- Commons FileUpload, Tiles, FreeMarker JSP support 같은 서블릿 기반 기능이 지원종료됬다.
- multipart file 업로드 혹은 freeMarker template view는 StandardServletMultipartResolver 사용을 권장
- 이외에는 Rest 기반 웹 아키텍처 사용
- Spring MVC와 Spring WebFlux에서 더 이상 type레벨에서의 @RequestMapping을 자동 탐색하지 않음
- interface의 경우에는 @RequestMapping을 부여도 더 이상 탐색되지 않는다.
- 따라서 Class에 붙이거나 interface에도 사용하고 싶으면 @Controller도 붙여야 함
- spring-cloud-openfeign에서도 이것 때문에 interface레벨 @RequestMapping 지원 종료(Git Issue)
- URL에서 마지막으로 나오는 / 매칭해주는 trailing slash matching configuration 기본적으로 지원하지 않음 (옵션 추가 시 사용 가능)
Spring Boot 2.x -> 3.0 변경사항
- 최소 요구사항 변경 (M4 기준)
- Gradle 7.5
- Groovy 4.0
- Jakarta EE 9
- Java 17
- Kotlin 1.6
- Hibernate 6.1
- Spring Framework 6
- AOT maven, gradle 플러그인 제공
- native 지원 기능 확대
참고 포스팅
728x90
반응형
'프로그래밍 > 백엔드' 카테고리의 다른 글
Spring boot 3.2.x 버전에서 Spring Security 기본틀 구현 (1) | 2024.04.20 |
---|---|
Spring 환경에서 네이버 클라우드 플랫폼(NCP) 파일서버 연동 구현 (Feat. AWS S3) (3) | 2024.04.20 |
리눅스 서버에서 한글 깨질 때 (Tomcat 9, Ubuntu) (0) | 2023.07.14 |
maven 라이브러리 경로가 삭제되는 현상 (0) | 2023.06.22 |
[Java] Eclipse server clean 오류 해결 방법 (0) | 2023.06.09 |