봄 5
Spring 5는 2017년 말에 릴리스되었습니다. Spring 5는 Spring 프레임워크에 대규모 업데이트를 제공합니다. Spring 4는 2013년에 출시되었으므로 모두가 프레임워크의 대대적인 개편을 기대하고 있었습니다. Spring 프레임워크의 새로운 기능을 보게 되어 매우 기쁩니다.
봄 5 기능
Spring 5 기능은 크게 다음 범주로 나눌 수 있습니다.
- 자바 기본 지원
- 핵심 API 향상
- Spring 웹 MVC 향상
- 스프링 웹플럭스
- Kotlin 지원 기능적 프로그래밍
- 테스트 개선
- 더 이상 사용되지 않는 지원 및 제거된 패키지
Java 기본 지원
- Spring 5는 Java 8에서 실행되므로 Spring 코드는 람다 식을 활용하여 코드 가독성을 높일 수 있습니다.
- Spring 5는 Java 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+입니다.
저는 Spring 5가 다양한 기술의 최신 버전을 따라잡으려는 것이 정말 마음에 듭니다.
핵심 API 향상
- 패키지 수준에서 null이 아닌 API 선언. Null 허용 인수, 필드 및 반환 값에는
@Nullable
주석이 명시적으로 추가됩니다. - 파일 작업은 NIO 2 스트림을 통해 수행됩니다. 즉, FileInput/Output 스트림이 없습니다. 이는 파일 기반 응용 프로그램의 성능을 크게 향상시키고 향상시킵니다.
- Spring Framework 5.0은 자체 Commons Logging 브리지와 함께 제공됩니다. 표준 Commons Logging 대신
spring-jcl
. - classpath 스캐닝이 아닌 "META-INF/spring.components\ 인덱스 파일을 통해 스프링 컴포넌트 정보 제공 지원. 대규모 스프링 프로젝트와 많은 스프링 컴포넌트가 있는 경우 시작 시간이 많이 향상됩니다. 더 좋을 것입니다. 전체 클래스 경로 파일을 검색하는 대신 지정된 파일을 직접 조사하여 애플리케이션 진입점을 파악할 수 있기 때문입니다.
스프링 웹 MVC 개선 사항
Spring MVC 모듈은 최신 Java EE 기술 사용 측면에서 대대적인 점검을 받았습니다. 주요 개선 사항 중 일부는 다음과 같습니다.
- Spring 제공
Filter
구현에서 전체 Servlet 3.1 서명 지원. - Spring MVC 컨트롤러 메서드에서 Servlet 4.0
PushBuilder
인수를 지원합니다. - 일반 서버에서 Servlet 3.0 멀티파트 구문 분석에 대한 MaxUploadSizeExceededException
- MediaTypeFactory 대리자를 통해 공통 미디어 유형에 대한 통합 지원
- @ConstructorProperties를 사용한 불변 객체와의 데이터 바인딩.
- Jackson 및 GSON의 대안으로 JSON 바인딩 API 지원
- Spring MVC 컨트롤러 메서드의 반환 값으로 Reactor 3.1 Flux 및 Mono와 RxJava 1.3 및 2.1을 지원합니다.
@ResponseStatus
에 대한 프로그래밍 방식의 대안으로ResponseStatusException
을 지원합니다.
스프링 웹플럭스
Spring WebFlux는 spring-webmvc
모듈의 대안이며 반응형 프레임워크에 구축된 새로운 모듈입니다. 이 모듈은 이벤트 루프 실행 모델에 구축된 완전 비동기 및 비차단 응용 프로그램을 만드는 데 사용됩니다.
- 객체 스트림을 인코딩 및 디코딩하기 위한 인코더 및 디코더와 같은 스프링 코어의 반응형 인프라.
- @Controller 스타일, 주석 기반, 프로그래밍 모델, Spring MVC와 유사하지만 반응형 스택에서 실행되는 WebFlux에서 지원됩니다.
- RestTemplate과 유사하지만 유창한 API를 통해 HTTP 호출을 위한 기능적이고 반응적인 API가 포함된 새로운 WebClient는 WebFlux 인프라를 기반으로 하는 비차단 및 스트리밍 시나리오에서도 뛰어납니다.
Kotlin 지원을 통한 함수형 프로그래밍
Spring 5는 이제 Kotlin 프로그래밍도 지원합니다. Java가 함수형 프로그래밍으로 이동하는 것처럼 이것은 함수형 프로그래밍을 지원하는 데 큰 진전입니다.
- Null-Safe API 지원
- 선택적 매개변수 및 기본값이 있는 Kotlin 불변 클래스 지원
- Kotlin은 유형 매개변수를 구체화하여 RestTemplate 또는 WebFlux API와 같은 다양한 API에서 직렬화/역직렬화에 사용할 클래스를 명시적으로 지정하지 않도록 했습니다.
- 선택적 매개변수가 있는 Kotlin autowired 생성자를 지원합니다.
- @RequestHeader/etc 주석에 대한 Kotlin null-safety 지원.
테스트 개선
- JUnit 5 지원
- Spring TestContext Framework에서 병렬 테스트 실행 지원
더 이상 사용되지 않는 지원 및 제거된 패키지
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 문서