The Spring Framework Reference Docu Ch.1 소개

Chapter 1. 소개




1.1. 개요




Spring은 아래 다이어그램에서 보여지는 7개의 모듈로 잘 조직된 많은 기능과 특성들로 이루어져 있다. 이 장은 순서대로 각 모듈을 언급한다.


Spring 프레임워크의 개요

 Core Package는 프레임워크의 가장 기본적인 부분이고 IoC와 의존성 삽입(Dependency Injection-DI)기능을 제공한다. 여기에 나타는 기본적인 개념인 BeanFactory는 프로그램에 따르게 되는 Singleton을 없애고 환경설정과 실제 프로그램 로직 내에서의 의존성에 대한 기술을 불리시키는 Factory 패턴이다.

 Core Package위에는 Framework 스타일의 Bean에 접근 방법을 제공하는 (다소 JNDI-registry와 비슷한)Context Package가 있다. Context Package는 Bean Package로부터 특성을 상속받고, 텍스트 메세지 지원, 이벤트 전달, 리소스로딩과 Context의 생성(예를 들어 서블릿 콘테이너에 의한)등의 부가적인 기능도 가진다.

 DAO Package는 지겨운 JDBC코딩과 Database 벤더의 특정 에러코드 파싱 작업으로부터 해방시켜줄 JDBC 추상화 레이어를 제공한다. 또한 JDBC Package는 선언적 트랜잭션 관리를 통해(특정 인터페이스 구현으로만이 아니라 스스로 작성한 POJO를 통해서도) 프로그래밍을 편하게 해준다.

 ORM Package는 대중적인 OR매핑 API들(JDO를 포함해서 Hiberante, iBatis 등)을 통합할수 있는 레이어를 제공한다. ORM Package를 통해서 앞에 이야기한 선언적 트랜잭션 관리와 같은 Spring이 제공하는 기능들을 조합해서 모든 OR매핑을 사용할 수 있다.

 AOP Package는 Aspect-Oriented Programming 구현을 정의하고 따르도록 하는 기능을 제공한다. 예를 들면 메소드 인터셉터와 Pointcut은 논리적으로 반드시 분리되어야 하기 때문에 기능적으로 명확하게 분리된 코드를 구현한다. 기능적인 소스레벨의 메타데이터를 사용해서 코드안에 실행되어야할 정보를 조합할수 있다. .NET의 속성과 약간 비슷하다.

 Web Package는 멀티파트 기능, 서블릿 리스너를 사용한 Context의 초기화, 웹 기반 Application 등과같은 웹기반 통합 기능을 제공한다. Spring을 WebWork나 Strutsrk같은 Package는 함께 통합될수 있다.

 Spring MVC Package는 웹 Application을 위한 Model-View-Controller(MVC)구현을 할 수 있도록 한다. Spring의 MVC구현은 그냥 보통의 구현이 아니다. 도메인 모델의 코드와 Web Form코드가 명확하게 분리되도록 하며 유효성체크와 같은 Spring의 다른 기능들을 사용할수 있도록 해준다. 

1.2. 사용 시나리오




 위에서 언급된 Building Blocks를 통해 애플릿에서부터 Spring의 트랜잭션 관리 기능과 웹 프레임워크를 사용하는 완전한 기업용 애플리케이션까지 모든 종류의 시나리오로 Spring을 사용할수 있다.

 

전형적인 완전한 Spring웹 애플리케이션

TransactionProxyFactoryBeans는 EJB 웹 Apllication 에서 제공되는 Container관리 Transaction 처럼 완벽하게 트랜잭션적이다. 비즈니스 로직은 Dependancy Injection 컨테이너에 의해 관리되는 간단한 POJO를 통해서 구현될 수 있다. 메일을 보내거나 유효성 체크를 위한 지원을 포함하는 서비스, 웹 레이어의 비의존성은 당신에게 유효성체크 규칙을 수행하기 위한 위치를 선택하도록 허용한다. Spring의 OR 매핑 지원은 Hibernate, JDO 그리고 iBatis와 통합된다.

 당신의 모든 사용자 지정 비지니스 로직은 Spring의 의존성 삽입 컨테이너에 의해 관리되는 간단한 POJO를 사용해서 구현될수 있다. 메일을 보내거나 유효성체크를 위한 지원을 포함하는 서비스, 웹 레이어의 비의존성은 당신에게 유효성체크 규칙을 수행하기 위한 위치를 선택하도록 허용한다. Spring의 ORM지원은 Hibernate, JDO 그리고 iBATIS와 통합된다. 예를 들어 Hibernate를 사용할때 당신은 존재하는 Hibernate맵핑을 지속적으로 사용하고 표준 Hibernate SessionFactory설정을 사용할수 있다. 폼 컨트롤러는 ActionForms이나 HTTP파라미터를 당신의 도메인 모델을 위한 값에 이동시키는 다른 클래스의 필요성을 제거하는 도메인모델을 가진 웹레이어와 유사하게 통합한다.

3자(third-party)의 웹 프레임워크를 사용한 Spring 미들티어

때때로 현재의 환경은 당신에게 다른 프레임워크로의 완벽한 교체를 허용하지 않는다. Spring은 이것내 모든것을 사용하도록 당신에게 강요하지 않는다. 이것은 모든것 또는 아무것도 아닌것(all-or-nothing)인 솔루션이 아니다. WebWork, Struts, Tapestry 또는 다른 UI프레임워크를 사용한 존재하는 앞부분은 당신에게 Spring이 제공하는 트랜잭션 기능을 사용하도록 허용하는 Spring기반의 미들티어와 완벽하게 통합될수 있다. 당신이 해야할 필요가 있는 오직 한가지는 ApplicationContext를 사용하여 당신의 비지니스 로직을 묶고 WebApplicationContext를 사용하여 당신의 웹 UI레이어를 통합하는 것이다.

원격 사용 시나리오

당신이 웹서비스를 통해 존재하는 코드에 접근할 필요가 있을 때, 당신은 Spring의 Hessian-, Burlap-, Rmi-JaxRpcProxyFactory클래스를 사용할수 있다. 존재하는 애플리케이션에 원격 접근을 가능하게 하는 것은 최근에는 어려운 일이 아니다.

EJB - 존재하는 POJO를 포장하기

Spring은 POJO를 재사용하는것을 당신에게 허용하고 그것들을 비상태유지(stateless) 세션빈으로 포장하고 선언적인 보안이 필요한 측정가능한 실패에 안전한(failsafe) 웹 애플리케이션내 사용하기 위한 EJB를 위해 존재하는 접근- 그리고 추상- 레이어를 제공한다.

by namkee | 2007/02/09 11:57 | Task | 트랙백 | 덧글(0)

트랙백 주소 : http://namkee.egloos.com/tb/3085954
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

<< 이전 페이지다음 페이지 >>