728x90

회사 멘토님이 Spring 버전별 차이를 알고 있는지, 그동안 어떤 버전을 써왔는지 물어보셨다.
생각 해보니 나는 어떤 버전의 Spring, Spring Boot를 쓰고 있고 버전별 차이점이 무엇인지에 대해 전혀 알지 못하고 있었다.
그래서 공부도 할겸 정리해보았다.

Spring 2.x

  • XML 네임스페이스와 AspectJ를 지원한다

Spring 3.x

  • 프레임워크 코드베이스 전반에 걸쳐 강력한 Java 5+ 기반과 Java 기반 @Configuration모델과 같은 기능을 도입한다
  • Bean을 XML 형태로 관리할 수 있다
  • RestTemplate을 지원한다
  • JavaConfig 프로젝트의 몇몇 핵심 기능을 스프링 프레임워크에 추가했다
    이 말은 다음 어노테이션을 이제 어노테이션을 이용해 DI 를 지원한다는 것이다 
    • @Configuration
    • @Bean
      어노테이션을 지원한다
  • HSQL, H2, Derby 같은 내장 자바 데이터베이스 엔진을 편리하게 지원한다

 

Spring 4.x

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

 

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 Boot 2.x , 즉 Spring 5.x 버전을 쓰고 있었다는 것을 알게되었다.
앞으로 개발할 때 버전도 잘 보고 개발해야겠다는 생각이 들었다.




출처: https://docs.spring.io/spring-framework/docs/4.3.x/spring-framework-reference/htmlsingle/#spring-whats-new
https://docs.spring.io/spring-framework/docs/4.3.x/spring-framework-reference/htmlsingle/#beans-meta-annotatio
https://github.com/spring-projects/spring-framework/wiki/Spring-Framework-5-FAQ

728x90

'Computer Science > Web programming' 카테고리의 다른 글

[Web] PUT vs PATCH  (0) 2022.12.05
[Web] SSR vs CSR  (4) 2022.08.30
[CS] MSA 구조 정리  (0) 2022.08.04
[Web] TDD 방법론  (1) 2022.05.24
[Web] REST vs RESTful vs REST API(RESTful API)  (2) 2021.12.31
복사했습니다!