Spring Framework
모든 Java 개발자를 대상으로 하지만 특히 Enterprise Java 개발자에 초점을 맞추고 있다.
Spring Framework의 상당 부분이 Enterprise Java의 대안으로 활용될 수 있게 설계되었으며 이를 통해 보다 쉽게 개발할 수 있는 방법들을 제공한다.
참고로 Enterprise Java 개발자가 아닐지라도 Spring이 제공하는 기능들을 통해 보다 효율적이고 실용적인 개발을 할 수 있을 것이다.
Spring Framework 특징
1) AOP(기능별 모듈화, 진정한 OOP 제공)
컨테이너는 일관성을 유지시켜 주고 투명한 환경 내에서 느슨한 컴포넌트(POJO)의 집합에서 복잡한 시스템을 조립할 수 있는 능력을 제공하며 조직을 해치지 않음.
- AOP지원을 통해 주요 비즈니스 로직과 시스템 전반에 걸친 기능 모듈을 완벽히 분리해내도록 도와준다.
2) IOC(Inversion of Control: 역제어) 컨테이너
애플리케이션 객체를 연결해 주고 자동화된 설정 및 집중화된 설정을 제공하는 가장 완전한 경량 컨테이너.
- 개발자가 직접 객체를 생성을 하지 않고, 객체의 생성에서 소멸까지 컨테이너가 관리.
- Dependency Injection을 통해 객체간의 의존성 주입.
- EJB 컨테이너에 비해 가벼운 Ioc 컨테이너.( Lightweight 컨테이너)
3) Test Unit(편리한 테스트) 제공
컨테이너는 민첩함을 제공하고 지렛대 역할을 하며 소프트웨어 컴포넌트를 먼저 개발하고 고립시켜 테스트할 수 있게 함으로써 테스트와 확장성을 향상시킨다.
- 작성된 코드에 대한 단위테스트를 쉽게 할 수 있도록 도와준다
4) 트랜잭션
트랜잭션 관리를 위한 공통의 추상화된 레이어, 트랜잭션 관리자를 플러그인할 수 있어서 저 수준 트랜잭션을 문제없이 처리한다.
- 선언적인 트랜잭션을 지원하여 코드를 수정하지 않고도 트랜잭션을 적용 및 변경 가능하도록 한다.
5) JDBC 추상화 레이어
중요한 예외 계층을 제공하며 예외처리를 단순화시켜 코드의 양을 덜어준다.
6) ORM 프레임워크 연동 제공
Hibernate, iBatis, JDO 등과 같은 ORM 프레임워크와 통합되어 있다.
7) 좀더 쉬운 J2EE 개발 지향(저비용 유연한 코드 유지)
- 계층화된 아키텍처를 갖고 있으며, 그 중 어떤 부분도 독립적으로 사용될 수 있도록 모듈화 되어있다.
- EJB를 사용하든 하지 않든 관계없이 비즈니스 객체들을 효과적으로 구성하고 관리할 수 있도록 한다.
- 컨테이너의 API에 의존적이지 않은 POJO[1] 관리.
- 자바 이외에 빈쉘, 제이루비, 그루비과 같은 스크립트 언어를 지원한다.
- 다른 여러 프레임워크와의 연동을 지원한다.
8) 다양한 프리젠테이션 계층 제공(jsp, velocity, excel, pdf ...)
- 프리젠테이션 계층을 위해 다중 뷰기술을 지원한다.
9) 좋은 설계(아키텍처) 제공
- 서블릿 기반의 MVC 프레임워크를 지원한다.
10) 분산(원격) 서비스
- RMI, JAX- RPC 등과 같은 기술을 이용하여 쉽게 원격 서비스 구현이 가능하다.
11) 보안
12) 기타
- Timer클래스나 쿼츠 스케쥴링 엔진을 이용하여 Job 스케쥴링을 지원한다.
- JavaMail이나 제이슨 헌터의 MailMessage를 이용하여 메일(Email)을 지원한다.
- 다국어를 통한 국제화를 지원한다.
[1] POJO(Plain Old Java Object)
특정 인터페이스 또는 클래스를 상속하지 않는 일반 자바 객체
Cf) Servlet 개체는 HttpServlet를 반드시 상속 , EJB 개체는 SessionBeane을 반드시 구현
'개발자 센터 > Spring' 카테고리의 다른 글
Spring에서 iBatis 연동하기 (7) | 2009.12.13 |
---|---|
AOP : Aspect Oriented Programming (0) | 2009.12.13 |
빈 라이프 사이클 (0) | 2009.12.13 |
제어의 역행 / 의존성 주입(Inversion of Control / Dependency Injection) (0) | 2009.12.13 |
Spring Framework의 개요 (0) | 2009.12.13 |