기본 JDK 지원 버전 업데이트

  • Spring Framework 5.0 최소 요구 사항 : Java 8
  • 전체 Spring 프레임 워크 5.0 코드베이스는 Java 8에서 실행


Core Framework Revision

  • Java 8 reflection 기반으로 Spring Framework 5.0의 메소드 매개 변수에 효율적으로 액세스 가능
  • 코어 스프링 인터페이스는 이제 Java 8 기본 메소드를 기반으로 선택적 선언을 제공
  • @ Nullable 및 @ NotNull 주석은 nullable 인수 및 반환 값을 명시적으로 표시
    • 런타임에 NullPointerExceptions 대신 컴파일 타임에 Null 값을 처리  가능


Core Container Updates

  • 선택적 주입 포인트에 대한 지표로 @Nullable 어노테이션 지원
  • GenericApplicationContext/AnnotationConfigApplicationContext 함수형 스타일 형태
  • 인터페이스 메소드에서 트랜잭션, 캐싱, 비동기 어노테이션 감지
  • 버전 정보 없는 XML 설정 네임스페이스
  • classpath 스캐닝 대신에 후보 구성 요소 색인 지원


Reactive Programming Model

  • Reactive Stack Web Framework이 핵심
  • 완전히 반응적이고 논 블로킹
  • 소수의 스레드로 확장 할 수있는 이벤트 루프 스타일 처리에 적합
  • Reactive Streams : 
    • Netflix, Pivotal, Typesafe, Red Hat, Oracle, Twitter 및 Spray.io의 엔지니어가 개발 한 API 사양
    • 리액티브 프로그래밍 구현을 위한 공통 API 제공
    • Hibernate,  JPA와 유사. (JPA가 API이고, Hibernate가 구현)
  • Reactive Streams API는 공식적으로 Java 9의 일부
  • Java 8에서는 Reactive Streams API 사양에 대한 종속성을 포함
  • Spring Framework 5.0은 Reactive Streams API 사양을 구현 한 Project Reactor 기반


Spring-webflux - 서버 측 두 가지 프로그래밍 모델을 가짐

  • @Controller와 Spring MVC의 다른 Annotation으로 된 Annotation 기반
  • Java 8 lambda를 사용한 함수형 스타일 라우팅 및 처리


Spring Webflux를 사용하면 RestTemplate의 대안으로 반응적이고 non-blocking적인 WebClient를 만들 수 있음



Kotlin을 사용한 함수형 프로그래밍

  • JetBrains Kotlin 언어 지원
  • Kotlin은 JVM 상단에서 실행되지만 이에 국한되지 않음


테스팅 개선

  • Junit 5 Jupiter 완벽 지원
  • Jupiter 서브 프로젝트는 프로그래밍 및 확장 모델을 제공 할뿐만 아니라 Spring에서 Jupiter 기반 테스트를 실행하는 테스트 엔진을 제공
  • Spring Framework 5는 Spring TestContext Framework에서 병렬 테스트 실행을 지원
  • 리액티브 프로그래밍 모델의 경우 스프링 테스트에는 이제 Spring WebFlux에 대한 테스트 지원을 통합하기위한 WebTestClient가 포함


지원 중단 패키지

  • beans.factory.access
  • jdbc.support.nativejdbc
  • mock.staticmock
  • web.view. tiles2M
  • orm.hibernate3
  • orm.hibernate4


라이브러리 지원 중단

  • Portlet
  • Velocity
  • JasperReports
  • XMLBeans
  • JDO
  • Guava


라이브러리 지원

  • Jackson 2.6+
  • EhCache 2.10+ / 3.0 GA
  • Hibernate 5.0+
  • JDBC 4.0+
  • XmlUnit 2.x+
  • OkHttp 3.x+
  • Netty 4.1+


Summarry

  • 중요한 패러다임 전환 - 리액티브 프로그래밍
  • 스프링 데이터 팀은 이미 MongoDB 및 Redis에 대한 리액티브 프로그래밍을 대응함
  • JDBC 지원 불가(JDBC 스펙 자체가 차단중, 전통적인 JDBC 데이터베이스로 리액티브 프로그램을 보는 것은 현재로서는 불가)
  • Spring Framework 5는 Reactive Streams 표준 API의 구현체인 Reactor를 사용중


Reference

[1] What's new in Spring framework 5(https://springframework.guru/what-is-new-with-spring-framework-5/)

[2] Web on Reactive Stack (https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#spring-webflux)

[3] What's New in the Spring Framework (https://github.com/spring-projects/spring-framework/wiki/What%27s-New-in-the-Spring-Framework)

Leave a Comment


to Top