- JavaEE가 제공하는 기능들을 대신 제공
- 가벼운 DI 및 AOP 기반 컨테이너이자 프레임워크
- 특징
- 자바 객체를 담고있는 컨테이너
- 컨테이너는 자바 객체의 생성, 소멸과 같은 라이프 사이클을 관리
- 컨테이너로부터 필요한 객체를 가져와 사용
- DI 지원
- Dependency Injection
- 설정파일이나 어노테이션을 통해 객체 간의 의존관계 설정
- 객체는 의존하고있는 객체를 직접 생성하거나 검색할 필요가 없다
- AOP 지원
- Aspect Oriented Programing
- 스프링 자체적으로 AOP를 지원하고 있다
- 트랜잭션이나 로깅, 보안등의 기능을 분리하여 각 모듈에 적용 가능
- POJO 지원
- Plain Old Java Object
- 스프링 컨테이너에 저장되는 자바 객체는 특정 인터페이스를 구현하거나 클래스를 상속받지 않아도 된다
- 기존에 작성한 코드를 수정할 필요없이 스프링에 사용 가능
- 트랜잭션 처리를 위환 일관된 방법 제공
- JDBC를 사용하든 JPA를 사용하든 설정파일을 통해 트랜잭션 관련 정보 입력
- 트랙잭션 구현에 상관없이 동이란 코드를 여러 환경에서 사용 가능
- 영속성과 관련된 다양한 API 지원
- JDBC, myBatis, 하이버네이트 등 널리 사용되는 라이브러리 연동 지원
- 다양한 API 연동 지원
- JMS, 메일, 스케쥴등 다양한 API를 설정파일과 어노테이션을 통해 지원
- 자체적으로 MVC 프레임워크 제공
- 스트럿츠2, JSF와 같은 프레임워크 연동