학습 기록 블로그
Spring 각 버전 별 특징 본문
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' 카테고리의 다른 글
[Spring Boot] 스프링 부트 개발 환경 세팅해보기(MySQL, IntelliyJ, Gradle, MyBatis) (0) | 2023.03.27 |
---|---|
[ERROR] Cause: org.xml.sax.SAXParseException: (0) | 2023.03.11 |
Comments