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에 Model-View-Controller를 지원하기 위한 기능이다. 지금까지 Struts, Webwork가 담당했던 기능들을 Spring Web MVC를 이용하여 대체하는 것이 가능하다. 또한 Velocity, Excel, PDF와 같은 다양한 UI 기술들을 사용하기 위한 API를 제공하고 있다.
Spring Framework - IoC DP IoC Setter Inj DI Constructor Inj Method Inj IoC : Inversion of Control DI : Dependency Injection DP : Dependency Pull EJB Spring 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 Destory Servlet Container Servlet A Servlet B Servlet C Servlet D
Spring Framework - IoC EJB Container EJB(세션빈, 엔티티빈, MDB)의 생성, 생성 후 초기화, 서비스 실행, 소멸에 관한 모든 권한을 가지면서 EJB의 생명주기를 관리한다. 개발자들이 직접 EJB 생성하고 서비스할 수 없다. Transaction, Security, EJB Pooling등의 추가적인 기능을 제공하고 있다. Service Init Create Destory EJB Container EJB A EJB B EJB C EJB D
Spring Framework - IoC IoC(또는 DI) Container POJO의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 POJO의 생명주기를 관리한다. 개발자들이 직접 POJO를 생성할 수도 있지만, 모든 권한을 Container에게 맡긴다. Transaction, Security 추가적인 기능을 제공한다. AOP 기능을 이용하여 새로운 Container 기능을 추가하는 것이 가능하다. Service Init Create Destory IoC(또는 DI) Container POJO A POJO B POJO C POJO D
POJO(Plain old Java Object)란 무엇인가? Spring Framework - IoC POJO(Plain old Java Object)란 무엇인가? Servlet과 EJB와 같이 특정 API에 종속적이지 않은 모든 자바 클래스. 일반적으로 우리들이 흔히 이야기하는 자바빈은 모두 POJO라고 이야기할 수 있다.
Spring Framework - IoC
Spring Framework - IoC BeanFactory를 이용하여 초기화를 진행할 때
ApplicationContext를 이용하여 초기화를 진행할 때
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 기능 Spring 프레임워크 개발 전략 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/index.html 도서 Pro Spring : http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200502280029 Java Development with the Spring Framework : http://kangcom.com/common/bookinfo/bookinfo.asp?sku=200507040005