봄 5는 2017년 말에 출시되었습니다. 봄 5는 스프링 프레임워크에 대한 대규모 업데이트를 가져왔습니다. 봄 4는 2013년에 출시되었기 때문에 모두가 프레임워크의 주요 개편을 기대하고 있었습니다. 나는 봄 프레임워크의 새로운 기능들을 보는 것에 매우 기쁘다.
봄 5의 기능
봄 5의 기능은 크게 다음 범주로 나뉠 수 있습니다:
- 자바 기준 지원
- 코어 API 향상
- 스프링 웹 MVC 향상
- 스프링 웹플럭스
- 코틀린 지원에 따른 함수형 프로그래밍
- 테스트 개선
- 폐기 예정 및 제거된 패키지 지원
자바 기준 지원
- 봄 5는 자바 8에서 실행되므로 스프링 코드는 람다 표현식을 활용하여 코드 가독성을 향상시킬 수 있습니다.
- 봄 5는 또한 자바 9를 지원하므로 모듈 기반 아키텍처에서 애플리케이션을 만들 수도 있습니다.
- Spring 5는 Java EE 7을 지원하며 Java EE 8과도 호환됩니다. 따라서 우리는 애플리케이션에서 Servlet 4.0, Bean Validation 2.0, JPA 2.2를 사용할 수 있습니다. 또한 이전 버전인 Servlet 3.1, Bean Validation 1.1, JPA 2.1도 사용할 수 있습니다.
- Spring 5 애플리케이션의 우선적인 서버 버전은 Tomcat 8.5+, Jetty 9.4+ 및 WildFly 10+입니다.
I really like that spring 5 is trying to catch up to the latest version of different technologies.
코어 API 개선 사항
- 패키지 레벨에서의 Non-null API 선언. Nullable 인수, 필드 및 반환 값은 명시적으로
@Nullable
어노테이션으로 주석 처리됩니다. - NIO 2 스트림을 통해 파일 작업이 수행됩니다. 즉, FileInput/Output Stream이 없습니다. 이것은 파일 기반 애플리케이션에 대한 큰 향상과 성능 향상입니다.
- Spring Framework 5.0은 표준 Commons Logging이 아닌 자체 Commons Logging 브리지인
spring-jcl
을 제공합니다. - 클래스패스 스캔 대신 인덱스 파일 “META-INF/spring.components”를 통해 spring 구성 요소 정보를 제공하는 지원입니다. 이것은 대규모 spring 프로젝트와 많은 spring 구성 요소가 있는 경우 시작 시간을 많이 개선할 것입니다. 또한 개발자에게 더 나은 방법을 제공합니다. 왜냐하면 우리는 전체 클래스패스 파일을 검색하는 대신 지정된 파일을 직접 찾아 애플리케이션 진입점을 알 수 있기 때문입니다.
스프링 웹 MVC 개선 사항
스프링 MVC 모듈은 최신 Java EE 기술을 사용하는 측면에서 주요 개편을 거쳤습니다. 주요 향상 사항은 다음과 같습니다:
- Spring이 제공하는
Filter
구현에서 전체 Servlet 3.1 서명 지원. - Spring MVC 컨트롤러 메서드에서 Servlet 4.0의
PushBuilder
인수 지원. - 일반 서버에서 Servlet 3.0 멀티파트 구문 분석에 대한 MaxUploadSizeExceededException.
- MediaTypeFactory 대리자를 통한 일반 미디어 유형에 대한 통합 지원.
- 불변 객체를 사용한 데이터 바인딩, Kotlin, Lombok, @ConstructorProperties 사용.
- JSON 바인딩 API 지원, Jackson 및 GSON 대체 옵션으로.
- Spring MVC 컨트롤러 메서드의 반환 값으로 Reactor 3.1의 Flux 및 Mono, 그리고 RxJava 1.3 및 2.1 지원.
@ResponseStatus
에 대한 프로그래밍 방식 대안으로ResponseStatusException
지원.
Spring WebFlux
Spring WebFlux는 새로운 모듈로, 이는 spring-webmvc
모듈의 대안이며 반응형 프레임워크 위에 구축되었습니다. 이 모듈은 이벤트 루프 실행 모델을 기반으로 한 완전히 비동기 및 논블로킹 응용 프로그램을 생성하는 데 사용됩니다.
- Spring-core의 반응형 인프라에서는 객체 스트림을 인코딩하고 디코딩하기 위한 인코더 및 디코더와 같은 요소가 있습니다.
- @Controller 스타일은 주석 기반의 프로그래밍 모델로, Spring MVC와 유사하지만 WebFlux에서 지원되며 반응형 스택에서 실행됩니다.
- RestTemplate과 유사하지만 풍부한 API를 통한 기능 및 반응형 API를 사용하는 새로운 WebClient가 있으며 WebFlux 인프라를 기반으로 한 논블로킹 및 스트리밍 시나리오에서도 뛰어난 성능을 발휘합니다.
Kotlin 지원을 통한 함수형 프로그래밍
Spring 5는 이제 Kotlin 프로그래밍을 지원합니다. 이는 Java가 함수형 프로그래밍으로 나아가고 있는 큰 한 걸음입니다.
- Null-Safe API 지원
- Kotlin 불변 클래스 지원, 선택적 매개변수 및 기본 값.
- Kotlin reified 유형 매개변수를 활용하여 명시적으로 지정하지 않고도 RestTemplate이나 WebFlux API와 같은 다양한 API에서 직렬화/역직렬화에 사용할 클래스를 지정할 수 있습니다.
- 옵션 매개변수를 사용하는 Kotlin autowired 생성자를 지원합니다.
- Kotlin 널 안전성 지원은 @Autowired/@Inject 및 @RequestParam/@RequestHeader/등의 주석에 대해서도 지원됩니다.
테스트 개선
- JUnit 5 지원
- Spring TestContext Framework에서 병렬 테스트 실행 지원
Deprecated 지원 및 제거된 패키지
spring-aspects
모듈에서beans.factory.access
,jdbc.support.nativejdbc
,mock.staticmock
패키지가 제거되었습니다.web.view.tiles2
및orm.hibernate3/hibernate4
패키지가 삭제되었습니다. 이는 Spring 5를 사용할 계획이라면 Hibernate 5도 함께 사용해야 한다는 것을 의미합니다.- 헌 기술들의 지원 중단 Portlet, Velocity, JasperReports, XMLBeans, JDO, Guava. 이 중 하나를 사용 중이라면 다른 기술로 이전하거나 Spring 4로 유지하세요.
Spring 5 기능에 대한 빠른 개요는 여기까지입니다. 참고: Spring GitHub 문서
Source:
https://www.digitalocean.com/community/tutorials/spring-5