본문 바로가기
FullStack/21. Java

Spring Framework

by nakanara 2007. 6. 22.
반응형
Spring Framework

홈페이지 :
http://www.springframework.org
주소 : http://www.springframework.org/download

Spring Framework란?
 
 Spring Framework(단지 Spring로 불리는 일도 있습니다)는, Rod Johnson씨의 저서Exoert One-on-One J2EE Design and Devlopment (실천 J2EE 시스템 디자인)중(안)에서 소개된 코드를 베이스로 한J2EE 어플리케이션 체제입니다.현재는 주로 Rod Johnson씨와 Juergen Hoeller씨에 의해 개발을 하고 있어 2005년 2월 28일에 Spring Framework 1.1.5가 릴리스 되었습니다.
 
 Spring Framework(은)는 J2EE 어플리케이션 체제이라고 되고 있습니다만, 보다 엄밀하게는 각종 Bean의 생성 및 관리를 실시하는 Lightweight 컨테이너라는 것으로 분류되고 있어 그것 단독으로 각종 어플리케이션을 구축하는 것이 아니라, Struts나 Webwork, Tapestry등이라고 한 다른 Web 어플리케이션 체제나(데스크탑 어플리케이션의 경우는) Swing등의 API와 조합해 이용하는 것이 일반적입니다.
 Spring Framework는 J2EE의 기능에 의존하고 있는 것은 아니기 때문에, 클라이언트 머신상에서 동작하는 스탠드얼론 어플리케이션이나 애플릿등으로부터 이용하는 일도 가능합니다.
또 Spring Framework에서는, 다른 체제나 API와의 제휴를 순조롭게 실현되기 (위해)때문에,IoC(Inversion of Control)라고 하는 개념이 채용되고 있습니다.IoC를 채용한 것으로,JavaBean스타일의 setter 메소드를 공개하고 있는 클래스이면, 특히 Spring Framework와의 제휴를 고려하지 않고 개발된 클래스에서 만나도, Spring Framework와 제휴시켜 사용하는 것이 가능해집니다.
 
Spring Framework를 이용하면(자) 무엇이 편리한가?
 
설정 정보의 일원화가 가능
데이터 소스나 OR매핑 툴의 엔진, DAO 클래스등의 정보를 단일의 파일에 정의해 두어 필요한 시점에서 인스턴스를 취득할 수가 있기 (위해)때문에, 원시 코드중으로부터 싱글 톤을 배제해, properties 파일의 수도 줄일 수가 있습니다.
데이타베이스 액세스에 수반하는 예외 처리의 간소화
벤더마다 다른 예외를 흡수해, 예외 핸들링을 간소화하기 위한 JDBC 추상화 레이어를 갖추고 있어 JDBC를 이용할 때에 finally 블록을 기술해 나갈 필요가 없어집니다.
트랜잭션(transaction) 관리의 추상화
JTA를 직접 조작하는 일 없이 트랜잭션(transaction) 관리를 실시할 수가 있는 트랜잭션(transaction) 추상화 레이어를 갖추고 있습니다.
MVC를 채용한 Web 어플리케이션 체제
Web 어플리케이션 구축용의 독자적인 클래스군이 준비되어 있어 Spring Framework단체에서도 Web 어플리케이션의 구축이 가능합니다.
통합된 AOP 기능
어스펙트 지향 프로그래밍 기능이 통합되고 있는 째, Spring Framework의 관리하에 있는 모든 Bean에 대해서, 선언형의 트랜잭션(transaction) 관리등의 행동을 자유롭게 적용할 수가 있습니다.
Hibernate를 표준으로 서포트
OR매핑 툴인 Hibernate를 Spring Framework의 환경하에서 이용하기 위한 클래스군이 제공되고 있습니다.
Lightweight 컨테이너란?
 
그런데, 그럼 Lightweight와는 도대체 어떤 것입니까? Spring Framework의 개발자들은, EJB가 가지는 이하와 같은 결점을 없앤 것이 즉 Lightweight 컨테이너이다, 로 하고 있습니다.
침략적인 API(기술하는 코드가 EJB에 의존해 버린다)
컨테이너에의 의존(EJB 컨테이너외에서는 기술한 코드가 동작하지 않는다)
배치 불가능한 고정된 기능
데프로이 작업에의 헌신
긴 기동 시간
이러한 EJB의 문제점에 대해서, Spring Framework에서는 IoC를 채용하는 것으로 어플리케이션 코드의 Spring Framework API에의 의존도를 줄여, 또 Web 어플리케이션이나 스탠드얼론 어플리케이션, 애플릿 등 이용 장면마다 다른 기동 처리를 준비하는 것으로 실행 환경에의 의존도 해결하고 있습니다.Spring Framework가 관리하는 Bean는 POJO(Plain Old Java Object)로서 직접 액세스 할 수가 있기 때문에, Bean의 이용에 수반하는 overload도 없습니다.게다가 Bean에 대해서 트랜잭션(transaction) 처리등을 투과적으로 추가하는 경우에는 AOP Interceptor를 통한 기능 추가가 가능합니다.
이와 같이,Spring Framework는 Bean 관리에 수반하는 여러가지 처리를 가능한 한 경량 한편 심플하게 실시하기로 주목적이 놓여져 있어 그것은 또 Lightweight 컨테이너의 정의의 본질이다고도 말할 수 있습니다.
Lightweight 컨테이너로서는,Spring Framework이외에도 PicoContainer라는 것이 있어, (Lightweight가 아닙니다만) Bean의 라이프 사이클 관리를 행하기 위한 체제로서는 Apache Avalon Project의 Avalon 등도 있습니다.

[
http://openframework.or.kr/framework_reference/spring/ver1.2.2/html/index.html]

 [참고]
 
http://blog.blessedsoft.com/entry/Spring-Framework-소개번역?TSSESSION=503d9cea7f90bc19635fc49d4be20b53 http://openframework.or.kr/framework_reference/spring/ver1.2.2/html/index.html
반응형