Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 토큰구조
- 배열과 메모리
- session이란?
- 우아한테크코스 Google Java Style Guid
- 자바 코드 가이드
- 신입개발자 프로젝트
- jwt토큰원리
- 세션단점
- jwt토큰구조
- session이뭔가요?
- session단점
- 백엔드 서버
- jwt원리
- 프로그래밍 배열
- jwt토큰관리
- 구글 자바 코드 스타일
- Google Java Style Guide
- 세션장단점
- jwt란?
- GPT프로젝트
- 프록시서버
- session이 뭔가요?
- 구글 자바 스타일
- 메모리에서 배열
- session장점
- 포워드프록시
- Google Java Code Style Guide
- 신입개발자
- ReverseProxy
- 세션장점
Archives
- Today
- Total
dev_dbdb1114
Spring 버전별 특징 본문
Overview
Spring이 뭘까?
- Spring Framework는 Java Web Framework이다.
- 개발 생산성을 위해 지원하는 강력한 기능들에 비하여 경량 Framework이고 다른 복잡한 부분들을 Framework단에서 처리해주어 개발자들이 business login에만 신경쓸 수 있도록 지원하다.
Spring의 특징
- IOC ( Inversion of Control 제어의 반전 )
- java를 이용한 프로그래밍에서는 new 연산자, 인터페이스 호출, 데이터 클래스 호출 방식으로 객체를 생성하고 소멸시킨다.
- IoC는 객체의 생성부터 소멸까지 개발자가 아닌 SpringContainer가 대신 해주는 것이다.
- 제어권이 개발자가 아닌 IOC에 있으며, IoC가 개발자의 코드를 호출해 객체를 생성, 소멸하여 생명주기를 관리한다.
- DI ( Dependency Injection, 의존성 주입 )
- 프로그램에서 구성 요소의 의존관계가 소스코드 내부가 아닌 외부의 설정 파일을 통해 정의되는 방식이다.
- 코드간의 재사용성을 높이고, 소스코드를 다양한 곳에 사용하며 모듈간의 결합도를 낮출 수 있다.
- 대표적으로 라이브러리나 API,프레임워크를 연동할 때 연결하는 소스코드를 직접 작성하는게 아닌 외부 파일을 연결해 불러오는 방식이다.
- AOP (Aspect Object Programing, 관점 지향 프로그래밍 )
- logging, transaction, security 등 여러 모듈에서 공통적으로 사용하는 기능을 분리하여 관리할 수 있다.
- 여러 객체에 공통으로 적용할 수 있는 기능을 구분함으로써 재사용성을 높여주는 프로그래밍 기법
- 경량 ( Light-wighted )
- 크기와 부하 측면에서 독립된 몇 개의 jar 파일로 구성되어 있기 때문에 설치가 용이하며 POJO를 사용한다.
- POJO( Plain Old Java Object ) POJO는 JAVA EE를 사용하면서 해당 플랫폼에 종속되어 있는 무거운 객체들을 만드는 것에 반발하여 나타난 용어이다. 별도의 프레임워크 없이 JavaEE 를 사용할 때에 비해 인터페이스를 직접 구현하거나 상속받을 필요가 없어 기존 라이브러리르 지원하기 용이하고, 객체가 가볍다.
- 크기와 부하 측면에서 독립된 몇 개의 jar 파일로 구성되어 있기 때문에 설치가 용이하며 POJO를 사용한다.
- Transaction 관리
- Java Objec에 대한 transaction을 지원하지만 J2EE와 같은 환경에 얽매이지 않는다.
- Container
- Application 객체의 Life Cycle과 객체들 간 의존 관계를 container 형태로 관리한다. Servlet Container와 Spring Container의 차이점은 특정 WAS, 벤더에 종속적이지 않으며 자유로운 확장이 가능하다는 것이다.
Spring 3.2.x ( ~ 2016.12.31 )
- Java 5의 지원되면서 Generic이나 가변인자 등과 같은 개선 사항이 추가되었다.
- ⇒ BeanFactory 등 핵심 API의 업데이트
- 전체 프레임워크를 하나의 Spring.jar 파일로 제공하던 부분을 여러개의 jar 파일로 나누어 제공한다
- spring-core, spring-web
- SPEL (Spring Expression Language)가 도입되었다.
- XML및 Annotation 기반 Bean 정의에서 사용할 수 있게 되었고, 외부 프로퍼티 파일이나 환경 변수에서 값을 가져오기 쉬워졌다.
- Rest API에 대한 지원이 추가되었다.
- 서버로서는 기존 MVC Framework레벨에서 Annotation 기반 확장이 추가되었다.
- 클라이언트로서는 RestTemplate을 추가해 지원한다.
- OXM ( Object XML Mapping ) 기능이 추가되어 XML 형태로 할 수 있게 지원한다 .
- @Configuration, @Bean 등의 Java Annotation을 이용해서 직접 메타 데이터를 설정하고, DI 지원이 가능해졌다.
- HSQL, H2, Derby 같은 내장 자바 데이터베이스 엔진을 편리하게 지원한다.
- @Async 주석을 통하여 비동기 메서드 호출을 지원했다.
Spring 4.1
- Java Config로 설정할 수 있는 부분이 증가했다.
- @JmsListener annotation으로 listener를 추가할 수 있게 했다.
- Spring Messaging abstraction이 JMS를 지원하기 시작했다.
- Caching 기능 향상
- CasheResolver를 사용해 캐시를 런타임에 결정하는 것이 가능해졌다.
- @CacheConfig 어노테이션을 이용한 어노테이션 레벨에서의 공통 세팅을 활성화 했다.
- cache resolver, cache manager, key generator 등의 커스터 마이징이 가능
- Web
- @RequestParam, @RequestHeader, @MatrixVariable에 Optrional 사용 가능
- ResourceResolver, ResourceTransformer, ResourceUrlProvider 사용 가능
- ResponseEntity가 빌더 형식의 api를 제공한다. ( ex: ResponseEntity.ok() )
Spring 4.2
- @Bean이 default method 감지
- @Import로 @Configuration class나 @Component class 임포트 가능.
- @Order 로 @Configuration 클래스가 로딩되는 순서 설정 가능
- annotation attribute를 위한 @AliasFor를 제공한다.
Spring 4.3
- Java 8 기능을 완전히 지원하기 시작함.
- Starter Pack이 생겨서 POM 설정을 도와준다.
- Groovy를 통한 Bean 설정이 가능하다.
- core
- 생성자 주입시 @Autowired 키워드 생략 가능
- @Configuration에서 생성자 주입 지원
- @Scheduled, @Schedules를 meta-annotation으로 사용 가능
- caching
- @Cacheable의 sync 속성을 통한 동시성 지원
- WEB
- @RequestMapping의 다양한 형태 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping 추가
- class level에서 @ResponseStatus 지원
- @PathVariable Optional 사용 가능
- MvcExceptionHandler에 지속적인 혹은 커스텀 에러 처리 가능
- @RestControllerAdivce 추가
Spring 5.0
- Java 8 버전이 기본으로 설정됨 ( Java EE 7 API 이상 사용 가능 )
- CoreFramework
- Java8이 기본이 되면서 코어 스프링 인터페이스들이 디폴트 메서드 기반의 선택적 정의를 제공함
- @Nullable, @NotNull annotation을 사용해서 명시적으로 nullable 인자를 표시하고 값을 얻어올 수 있다. 이것은 컴파일 타임에 null값을 다룰 수 있게 됨을 뜻함.
- spring-jcl이라는 공통 로깅 브릿지 모듈 추가
- Core Container
- 후보 컴포넌트 인덱스 기능 추가 (classpath 기반의 Component 스캔을 대체할 수 있다.
- non-blocking과 함수형 프로그래밍, reactive stream의 구현을 할 수 있는 Spring WebFlux를 지원한다. ( Spring MVC도 가능 )
- Spring Framework5로 업그레이드하면 Spring WebFlux를 사용하기 위해 애플리케이션을 다시 작성할 필요가 없다.
- Kotlin을 사용한 함수형 프로그래밍
- Testing
- Junit 5의 Jupiter 지원
참고
https://velog.io/@jmjmjmz732002/Spring-Spring-버전별-특징#spring-4x
https://hirlawldo.tistory.com/204
'프로그래밍 > SPRING' 카테고리의 다른 글
| 빌드와 빌드도구 ( Maven과 Gradle ) (2) | 2023.09.03 |
|---|---|
| SpringWebFlux (0) | 2023.09.01 |
Comments