Spring Framework 특징
컨테이너 역할
- Spring 컨테이너는 Java 객체의 LifeCycle을 관리하며, Spring컨테이너로 부터 필요한 객체를 가져와 사용할 수 있다.
DI (Dependecy Injection) 지원
- Spring은 설정 파일이나 어노테이션을 통해서 객체 간의 의존관계를 설정할 수 있도록 하고 있다.
AOP (Aspect Oriented Programming) 지원
- Spring은 트랜잭션이나 로깅, 보안과 같이 공통적으로 필요로 하는 모듈들을 실제 핵심 모듈에서 분리해서 적용할 수 있다.
POJO (plain Old Java Object) 지원
- Spring 컨테이너에 저장되는 Java 객체는 특정한 인터페이스를 구현하거나, 특정 클래스를 상속받지 않아도 된다.
트랜잭션 처리를 위한 일관된 방법을 지원
- JDBC, JTA등 어떤 트랜잭션을 사용하던 설정(XML, annotation)을 통해 정보를 관리하므로 트랜잭션 구현에 상관없이 동일한 코드 사용가능
영속성(Persistence)과 관련된 다양한 API 지원
- Spring은 MyBatis, Hibernate등 데이터베이스 처리를 위한 ORM(Object Relational Mapping) 프레임워크들과의 연동 지원
Spring 프레임워크를 구성하는 기능 요소
Spring Core 컨테이너 | - Spring 프레임워크의 기본기능 제공 - 이 모듈에 있는 BeanFactory는 Spring의 기본 컨테이너이면서 스프링 DI의 기반이다. |
Spring AOP | - AOP 모듈을 통해 Aspect 지향 프로그래밍을 지원 (공통지원 로직) - AOP 모듈을 스프링 애플리케이션에서 Aspect를 개발할 수 있는 기반을 지원한다. |
Spring ORM | - MyBatis, Hibernate, JPA 등 널리 사용되는 ORM 프레임워크와의 연결고리를 제공한다. - ORM제품들은 Spring의 기능과 조합해서 사용할 수 있도록 해준다. |
Spring DAO | - JDBC에 대한 추상화 계층으로 IDBC 코딩이나 예외처리를 하는 부분을 간편화 시켰으며, AOP모듈을 이용해 트랜잭션 관리 서비스도 제공한다. |
Spring WEB | - 일반적인 웹애플리케이션 개발에 필요한 기본기능을 제공한다. - Webwork 나 Struts와 같은 다른 웹애플리케이션 프레임워크와의 통합을 지원한다. |
Spring Context | - 기존 Spring Core의 확장 - Context 모듈은 BeanFactory의 개념을 확장한 것으로 국제화(I18N)메시지, 애플리케이션 생명주기 이벤트, 유효성 검증 등을 지원한다. |
Spring Web MVC | - 사용자 인터페이스가 애플리케이션 로직과 분리되는 웹 애플리케이션을 만드는 경우에 일반적으로 사용되는 패러다임이다. |