3. Spring 프레임워크의 IoC 컨테이너 개념

Download Report

Transcript 3. Spring 프레임워크의 IoC 컨테이너 개념

3. Spring 프레임워크의
IoC 컨테이너 개념
Spring Framework - Introduction
IoC : Inversion of Control
AOP : Aspect Oriented Programming
IoC(또는 DI)
AOP
Abstract API
(JDBC, EJB등)
Spring Framework - Introduction
Spring Framework - Introduction




Spring Core : Spring 프레임워크의 근간이 되는 IoC(또는 DI) 기능을 지원하는 영역
을 담당하고 있다. BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능
을 지원한다.
Spring Context : Spring Core 바로 위에 있으면서 Spring Core에서 지원하는 기능
외에 추가적인 기능들과 좀 더 쉬운 개발이 가능하도록 지원하고 있다. 또한 JNDI,
EJB등을 위한 Adaptor들을 포함하고 있다.
Spring DAO : 지금까지 우리들이 일반적으로 많이 사용해왔던 JDBC 기반하의 DAO
개발을 좀 더 쉽고, 일관된 방법으로 개발하는 것이 가능하도록 지원하고 있다.
Spring DAO를 이용할 경우 지금까지 개발하던 DAO보다 적은 코드와 쉬운 방법으
로 DAO를 개발하는 것이 가능하다.
Spring ORM : Object Relation Mapping 프레임워크인 Hibernate, IBatis, JDO와의
결합을 지원하기 위한 기능이다. Spring ORM을 이용할 경우 Hibernate, IBatis,
JDO 프레임워크와 쉽게 통합하는 것이 가능하다.
Spring Framework - Introduction



Spring AOP : Spring 프레임워크에 Aspect Oriented Programming을 지원하는 기
능이다. 이 기능은 AOP Alliance 기반하에서 개발되었다.
Spring Web : Web Application 개발에 필요한 Web Application Context와
Multipart Request등의 기능을 지원한다. 또한 Struts, Webwork와 같은 프레임워크
의 통합을 지원하는 부분을 담당한다.
Spring Web MVC : Spring 프레임워크에서 독립적으로 Web UI Layer에 ModelView-Controller를 지원하기 위한 기능이다. 지금까지 Struts, Webwork가 담당했던
기능들을 Spring Web MVC를 이용하여 대체하는 것이 가능하다. 또한 Velocity,
Excel, PDF와 같은 다양한 UI 기술들을 사용하기 위한 API를 제공하고 있다.
Spring Framework - IoC
• EJB
• Spring
IoC : Inversion of Control
DI : Dependency Injection
DP : Dependency Pull
DP
IoC
Setter Inj
DI
Constructor Inj
• Spring
• PicoContainer
Method Inj
Spring Framework - IoC
public class MovieLister{
public void list() {
MovieFinder finder = new MovieFinderImpl();
}
}
Spring Framework - IoC
public class MovieLister{
public void list() {
MovieFinder finder = Assember.getBean("movieFinder");
}
}
Spring Framework - IoC


Spring은 하나의 프레임워크이다. 그런데 왜 Spring 컨
테이너, IoC 컨테이너라는 말을 사용할까?
컨테이너란 무엇일까?
Spring Framework - IoC

Servlet Container



Servlet의 생성, 생성 후 초기화, 서비스 실행, 소멸에 관한 모든 권한을
가지면서 Servlet의 생명주기를 관리한다.
개발자들이 직접 Servlet을 생성하고 서비스하지는 않는다.
JSP/Servlet 접근 권한, 에러 처리에 대한 추가적인 기능도 지원한다.
Service
Init
Create
Servlet A
Destory
Servlet B
Servlet C
Servlet Container
Servlet D
Spring Framework - IoC

EJB Container



EJB(세션빈, 엔티티빈, MDB)의 생성, 생성 후 초기화, 서비스 실행, 소
멸에 관한 모든 권한을 가지면서 EJB의 생명주기를 관리한다.
개발자들이 직접 EJB 생성하고 서비스할 수 없다.
Transaction, Security, EJB Pooling등의 추가적인 기능을 제공하고 있
다.
Service
Init
Create
EJB A
EJB B
Destory
EJB C
EJB Container
EJB D
Spring Framework - IoC

IoC(또는 DI) Container



POJO의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서
POJO의 생명주기를 관리한다.
개발자들이 직접 POJO를 생성할 수도 있지만, 모든 권한을 Container
에게 맡긴다.
Transaction, Security 추가적인 기능을 제공한다. AOP 기능을 이용하
여 새로운 Container 기능을 추가하는 것이 가능하다.
Service
Init
Create
POJO A
Destory
POJO B
POJO C
IoC(또는 DI) Container
POJO D
Spring Framework - IoC

POJO(Plain old Java Object)란 무엇인가?


Servlet과 EJB와 같이 특정 API에 종속적이지 않은 모든 자바 클래스.
일반적으로 우리들이 흔히 이야기하는 자바빈은 모두 POJO라고 이야
기할 수 있다.
Spring Framework - IoC
Spring Framework - IoC

BeanFactory
를 이용하여
초기화를 진
행할 때

Applicatio
nContext
를 이용하
여 초기화
를 진행할
때
Spring Framework - IoC

실습

Bean Factory : Spring이 DI를 지원하기 위한 API






간단한 Hello World 예제 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1004
다양한 Type의 인자를 Injection하는 예제 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1009
Bean Naming을 이해할 수 있는 예제 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1032
Singleton과 Non-Singleton을 설정하기 위한 예제 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1033
각 Bean들을 Auto-Wiring으로 엮는 예제 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1014
Bean 상속 : http://wiki.javajigi.net/pages/viewpage.action?pageId=1035
Spring Framework - IoC

실습

Advanced 기능






Bean의 LifeCycle을 이해하기 위한 예제 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1040
ApplicationContext에 의하여 지원되는 간단한 Event Mechanism :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1058
MessageSource를 사용하여 국제화 기능 지원 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1054
자바빈 Property Editors :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1047
FactoryBean을 사용해야하는 경우와 사용예제 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1044
Spring 프레임워크 개발 전략


Spring의 Bean Definition 설정 파일 관리 전략 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1037
Spring 프레임워크에서의 테스트 전략 :
http://wiki.javajigi.net/pages/viewpage.action?pageId=1039
Spring Framework - IoC

온라인 문서




Spring Core API 및 IoC(DI) :
http://wiki.javajigi.net/pages/viewpage.action?pageId=281
Inversion of Control Containers and the Dependency Injection
pattern : http://martinfowler.com/articles/injection.html
Spring Reference 문서 :
http://static.springframework.org/spring/docs/1.2.x/reference/inde
x.html
도서


Pro Spring :
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200502
280029
Java Development with the Spring Framework :
http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200507
040005