학습 기록 블로그

Spring 각 버전 별 특징 본문

Spring

Spring 각 버전 별 특징

오직노력 2023. 2. 10. 20:18

Java로 개발을 시작했다보니 자연스럽게 Spring을 쓰고 있었는데, 진행했던 프로젝트의 Spring 버전을 확인해보니 

'5.3.22' 로 설정되어있었다. 그러다 문득 우린 왜 5.x버전을 사용했을까 하는 의문과 함께 내가 Spring 버전별 특징을 모르고 있다는 것을 자각하게 되었고 생각난 김에 조사하고 정리해보려한다.

 

Spring 3.x

  • Spring 3.0 부터 Java5가 지원된다.
  • OXM(Object Xml Mapping)을 사용하여 Bean을 XML형태로 관리할 수 있게 되었다.
  • Rest API 에 대한 지원이 추가되었다.
    서버로서는 기존 MVC Framework 레벨에서 Annotation 기반 확장이 추가되었다.
    클라이언트로서는 RestTemplate 을 추가해 지원한다.
  • Java 클래스로부터 @Configuration, @Bean 등의 Annotation을 사용해서 직접 메타 데이터를 설정하고,
    DI 지원을 받을 수 있다.
  • HSQL, H2, Derby 같은 자바 데이터베이스 엔진을 편리하게 지원한다.
  • 2016년 12월 31일부로 개발 및 지원이 종료되었다.

JavaConfig => xml 설정을 대체하여 의존성 주입을 가능하게 해주는 어노테이션 (@Configuration, @Bean으로 표기)

 

Spring 4.x

  • Java8 기능을 완전히 지원하는 최초의 버전이다.
        Spring의 콜백 인터페이스로 람다 표현식과 메소드 참조를 사용할 수 있다.
  • Groovy DSL을 이용하여 외부 빈 설정을 정의할 수 있다.
        XML 빈 정의를 사용하는 것과 개념적으로 유사하지만  보다 간결한 구문을 허용한다.
  • @Autowire 주석을 생성자에 적용할 수 있다(Spring 3.x 에서는 setter 주입을 권장했었다.)
        Bean의존성 주입 방법 3가지 : 생성자, 필드, setter
        단일 생성자의 경우 묵시적 자동 주입이 가능(@Autowired 어노테이션을 사용하지 않아도 된다. Spring 4.3부터)
  • Spring MVC 애플리케이션과 함께  @RestController주석 을 사용할 수 있다.
        @ResponseBody, @RequestMapping을 매번 메소드에 추가할 필요가 없다 
  • REST 클라이언트를 개발할 때 비차단 비동기 지원을 허용 하는 AsyncRestTemplate 클래스가 추가되었다
  • WebSocket, SockJS 및 STOMP에 대한 지원이 추가되었다.
  • 2020년 12월 31일부로 개발 및 지원이 종료되었다.

Spring 5.x

  • non-blocking과 함수형 프로그래밍, reactive stream의 구현을 할 수 있는 Spring WebFlux를 지원한다
    (물론 Spring MVC도 가능)
    Spring Framework 5로 업그레이드하면 Spring WebFlux를 사용하기 위해 애플리케이션을 다시 작성할 필요가 없다
  • 공식적으로 Kotlin을 지원과 JUnit 5를 지원한다
  • 기본적으로 Java 8 기반, Java 9와 함께 동작하도록 설계되어 있다
  • Spring Boot 2.x 라인은 Spring Framework 5를 기반으로 한다
  • Spring Framework 5는 Java 6 또는 Java 7에서 작동할까?
    작동하지 않는다. Spring Framework 5에는 Java 8 이상이 필요하다.

 

참고)

Spring 버전별 특징

스프링 버전 별 특징

Comments