1) AOP(기능별 모듈화, 진정한 OOP제공)
⒜ 컨테이너는 일관성을 유지시켜 주고 투명한 환경 내에서 느슨한 컴포넌트(POJO)의 집합에서 복잡한 시스템을 조립할 수 있는 능력을 제공하여 조직을 해치지 않음
⒝ AOP지원을 통해 주요 비즈니스 로직과 시스템 전반에 걸친 기능 모듈을 완벽히 분리해내도록 도와준다.
2) IOC(Inversion of Control : 역제어) 컨테이너
⒜ 애플리케이션 객체를 연결해 주고 자동화된 설정 및 집중화된 설정을 제공하는 가장 완전한 경량 컨테이너
⒝ 개발자가 직접 객체를 생성을 하지 않고, 객체의 생성에서 소멸까지 컨테이너가 관리.
⒞ Dependency Injection 을 통해 객체간의 의존성 주입.
⒟ EJB 컨테이너에 비해 가벼운 IOC 컨테이너. (Lightweight 컨테이너)
3) Lightweiht 컨테이너
⒜ EJB 컨테이너에 비해 가벼운 IOC 컨테이너.
⒝ 컨테이너의 API에 의존적이지 않은 POJO관리.
4) Test Unit (편리한 테스트) 제공
⒜ 컨테이너는 민첩함을 제공하고 지렛대 역활을 하며 소프트 웨어 컴포넌트를 먼저 개발하고 고립시켜 테스트할 수 있게 함으로써 테스트와 확장성을 향상시킨다.
⒝ 작성괸 코드에 대한 단위 테스트를 쉽게 할 수 있도록 도와준다.
5) 트랜잭션
⒜ 트랜잭션 관리를 위한 공통의 추상화된 레이어, 트랜잭션 관리자를 플러그인할 수 있어서 저 수준 트랜잭션을 문제없이 처리한다.
⒝ 선언적인 트랜잭션을 지원하여 코드를 수정하지 않고도 트랜잭션을 적용 및 변경 가능하도록 한다.
6) JDBC 추상화 레이어
⒜ 중요한 예외 계층을 제공하며 예외처리를 단순화시켜 코드의 양을 덜어준다.
7) ORM 프레임워크 연동 제공
⒜ Hibernate, MyBatis, JDO 등과 같은 ORM 프레임워크와 통합되어 있다.
8) 좀더 쉬운 J2EE 개발 지향 (저비용 유연한 코드 유지)
⒜ 계층화된 아키텍처를 갖고 있으며, 그 중 어떤 부분도 독립적으로 사용될 수 있도록 모듈화 되어있다.
⒝ EJB를 사용하든 하지 않든 관계없이 비즈니스 객체들을 효과적으로 구성하고 관리할 수 있도록 한다.
⒞ 컨테이너의 API에 의존적이지 않은 POJO관리.
⒟ 자바 이외에 빈쉘, 제이루비, 그루비와 같은 스크립트 언어를 지원한다.
⒜ 프리젠테이션 계층을 위해 다중 뷰 기술을 지원한다.
10) 좋은 설계(아키텍처) 제공
⒜ 서블릿 기반의 MVC 프레임워크를 지원한다.
11) 분산(원격) 서비스
⒜ RMI, JAX-RPC 등관 같은 기술을 이용하여 쉽게 원격 서비스 구현이 가능하다.
12) 보안
13) 기타
⒜ Timer 클래스나 쿼츠 스케줄링 엔진을 이용하여 JOB 스케줄링을 지원한다.
⒝ JavaMail이나 제이슨 헌터의 MailMessage를 이용하여 메일(Email)을 지원한다.
⒞ 다국어를 통한 국제화를 지원한다.
* POJO(Plain Old Java Object) 특정 인터페이스 또는 클래스를 상속하지 않는 일반 자바 객체를 의미 cf) Servlet 개체는 HttpServlet 을 반드시 상속, EJB 개체는 SessionBean을 반드시 구현 |
'spring' 카테고리의 다른 글
maven 에러 Missing artifact com.sun.jdmk:jmxtools:jar:1.2.1 (0) | 2015.04.01 |
---|---|
Maven pom.xml dependency를 가진 대상의 scope설정 (0) | 2015.04.01 |
Bean 객체 스캔 (0) | 2015.03.31 |
Annotation (0) | 2015.03.31 |
Spring Framework 모듈 (0) | 2015.03.17 |