전체 글(411)
-
Spring IoC (Inversion of Control)
IoC (Inversion of Control) = 역제어 자바가 등장한 최초에는 객체 생성 및 의존관계에 대한 모든 제어권이 개발자에게 있었던 것. 서블릿, EJB가 등장하면서는 서블릿과 EJB를 관리하는 컨테이너에게로 넘어가 버리게 된 것. IoC에서 제어권의 역전은 객체의 생성에서부터 생명주기의 관리까지 모든 객체에 대한 제어권이 바뀌었다는 것을 의미. 객체에 대한 생성 및 생명주기를 관리할 수 있는 컨테이너 기능을 포함하고 있기 때문에 Spring 프레임워크를 Spring 컨테이너, IoC 컨테이너로도 부른다. IoC 기능은 Spring 프레임워크가 탄생하기 훨씬 이전부터 사용되던 개념 "새로운 개념을 사용하는 것이 적합하다"고 주장한 사람이 Martin Fowler. IoC를 Dependency..
2010.08.15 -
Spring Framework 설치 및 개발 환경
Spring 프레임워크 사이트(http://www.springframework.org)에서 다운 다운받은 압축 파일을 풀면 Spring 프레임워크 기반으로 애플리케이션을 개발하기 위한 모든 라이브러리는 lib 디렉토리에, Spring 프레임워크 라이브러리는 dist 디렉토리에 각각 포함되어 있다. Spring 프레임워크 라이브러리는 각 모듈별로 분리되어 있는 spring-xxx.jar 파일과 모든 모듈을 포함하고 있는 spring.jar 파일로 나뉘어 있다. 여러 개의 jar 파일로 분리하여 배포하는 이유는 각 모듈별로 분리하여 사용하는 것이 가능하기 때문이다. 각 모듈들이 서로 독립적으로 사용 가능하기 대문에 Spring 프레임워크의 모든 기능이 필요하지 않다면 사용하고자 하는 모듈용 jar 파일만 사..
2010.08.15 -
Lightweight 컨테이너 아키텍처 = Spring Framework
가벼우면서도 컨테이너 기능을 가지고 있는 아키텍처 Lightweight는 EJB 컨테이너와 비교하여 가벼운 컨테이너라는 것 컨테이너 기능을 가진다는 것은, 트랜잭션 처리, Security, 빈의 생명주기관리와 같은 컨테이너를 통해서 지원할 수 있는 기능들을 지원하는 것이 가능하다는 것 각 계층에서 사용하고 있는 기술들에 있어서 Non EJB 아키텍처와 별반 다르지 않다. 다른 부분은 계층별 인터페이스를 담당하는 POJO 빈들을 유기적으로 관리해주는 컨테이너를 가지고 있다는 것 POJO에 대한 컨테이너 기능을 지원하는 대표적인 프레임워크가 Spring 프레임워크 Spring 프레임워크는 POJO에 대한 컨테이너적인 역할을 할 뿐만 아니라 각 계층의 의존관계를 유기적으로 연결하고 관리하는 기능을 지원한다. ..
2010.08.15 -
EJB 아키텍처
EJB의 프록시 역할을 하는 Business Delegate를 두어서 분산 환경하에 있는 EJB를 호출하도록 구현 Business Delegate의 역할은 UI 계층으로 하여금 비즈니스 계층이 분산 환경하에서 구현되어 있는지를 모르는 상태에서 사용하는 것이 가능하도록 한다. 비즈니스 계층은 EJB의 Remote 인터페이스나 Local 인터페이스를 가지는 무상태 세션빈이 담당 EJB는 EJB 컨테이너 하에서 관리되고 있으며, EJB 컨테이너는 분산 환경, 트랜잭션 관리, Security 등의 기능을 지원하고 있다. 퍼시스턴스 계층을 담당하도록 하기 위해 EJB는 엔티티빈을 제공 실행 속도의 문제 때문에 최근에는 엔티티빈을 사용하지 않는 것이 일반적 대신, OR Mapping 프레임워크를 이용하거나 JDBC..
2010.08.15 -
Non EJB 아키텍처
Non EJB 아키텍처: EJB를 사용하지 않는 애플리케이션의 모든 아키텍처를 통칭 "EJB를 사용하지 않는다"는 것을 의미 서블릿 컨테이너 기반으로 개발 UI계층은 JSP/Servlet, MVC(Struts, Webwork) 프레임워크가 담당 비즈니스 계층은 자바빈(POJO기반의 Singleton 패턴 이용) 퍼시스턴스 계층은 OR Mapping 프레임워크(Hibernate, iBatis) ※ POJO (Plain Old Java Object)는 일반적으로 지금까지 자바빈이라고 불러왔던 클래스들을 일컫는다. 서블릿, EJB와 같이 인터페이스에 종속되어 특정 컨테이너 내부에서만 사용할 수 있는 클래스를 제외한 모든 클래스를 POJO라고 말할 수 있다. Non JEB 아키텍처는 자바(JDBC API 사용)..
2010.08.15 -
DataSource Lookup
import java.sql.Connection; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; Context ctx = new InitialContext(); // Tomcat Server에서 DataSource를 Lookup DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/SpringDS"); // JBoss Server에서 DataSource를 Lookup DataSource ds = (DataSource) ctx.lookup("java:/jdbc/SpringDS"); return ds.getConnection(); [출..
2010.08.15