JAKARTAPROJECT
JAKARTA TIPJSP TIPJSP 질문&답변DATABASE TIPJAVASCRIPT TIPWEBHACKING TIP기타 TIP
JSP 팁
JSP 팁
JSP 팁 게시판 입니다
Spring 빈묶기-1
kaiser
이미지 슬라이더 보기
 

 Spring에서는 어떤 컴포넌트가 다른 컴포넌트와의 연관관계를 관리할 책임이 없다.

어떤 컴포넌트에서 다른 컴포넌트를 호출하는 것을 말하는 같다.

대신, 컨테이너에 의해 컴포넌트 간의 협업을 위한 참조가 주어진다.

이렇듯  애플리케이션 컴포넌트 간의 연관관계를 만드는 행위를 묶기(wiring)라고 하며, 이번 장에서 다룰 주제이다.

Spring 묶기는 단순히 객체간의 연관관계를 성립시키는 작업 이상의 것이다.

또한 spring 사용해 빈의 특성을 설정하는 방법, 별도 파일로 배치(deployment) 설정을 외부화 하는 방법, 빈의 생명주기를 관리하는 방법 등을 알게 된다.

비즈니스를 묶는 것과 관련된 내용이 spring 핵심이 아닐까 한다.

 

Spring 프레임워크를 사용하기 위해 빈을 설정 때에는, 항상 spring 컨테이너에 어떤 지시사항을 기술해야 한다. 따라서 컨테이너를 알면, 빈이 어떻게 관리되는지를 이해하는데 도움이 되기때문에 컨테이너를 알아보자.

 컨테이너는 spring 프레임워크의 핵심이다. Spring 컨테이너는 제어역행(IOC) 사용해 애플리케이션을 구성하는 컴포넌트를 관리한다. 여기서 협력하는 컴포넌트간의 연관관계를 생성하는 것을 포함한다. 이는 객체는 좀더 명확하게 이행 있고, 재사용이 가능해지며, 단위 테스트가 쉬워진다고 한다.

 

Spring 기본 컨테이너 2

   org.springframework.beans.factory.BeanFactory 인터네이스로 정의된 빈팩토리

   : 기본적인 의존성 주입 지원

  org.springframework.context.ApplicationContext 인터네이스로 정의되는 애플리케이션 컨텍스트

   : 프로퍼티 파일의 텍스트 메시지 해석, 애플리케이션 프레임워크 서비스 제공

 

외에 다수 존재한다. 그리고 빈팩토리와 애플리케이션 컨텍스트를 모두 컨테이너 용어 한다.

 

1. 팩토리

 - 빈을 생성하고 분배하는 책임을 지는 클래스이고 팩토리 디자인 패턴을 구현한 것이다.

    ( 팩토리 패턴은 객체를 생성하고 분배하는 패턴이고 자세한것은 스스로…^^)

 

   빈팩토리는 애플리케이션내의 많은 객체에 대해 알고 있기 때문에 객체들을 인스턴스화할때 협업하는 객체 간의 연관관계를 생성시키는 것이 가능하다.( 말은 객체들간의 관계를 정의하는 무엇가가 필요하는 말이다.)

  이렇게 하는 이유는 자신과 빈의 클라이언트로부터 설정이라는 작업이  없다. 그로 인하여 빈팩토리가 객체를 분배하는 시점에서는 객체들이 완전히 설정된 상태이며, 협업하는 객체들끼리 인식하고 있고 곧바로  사용할 있는 상태인 것이다.  빈팩토리는 커스텀 초기화 메소드와 소멸 메소드를 호출함으로써 빈의 생명주기에 개입할 있다.

 

Spring 다양한 BeanFactory 구현 클래스 가장 유용한 것은 org.springframework.beans.factory.xml.XmlBeanFactory 로서 xml 파일에 기술되어 있는 정의를 바탕으로 빈을 로딩한다.

 

 BeanFactory factory = new XmlBeanFactory(new FileSystemResource("beans.xml"));

 

코드는 팩토리에게 XML 파일로부터 빈에 대한 정의를 읽어오라고 알려준다. 그러나 팩토리가 빈을 인스턴스화하는 것은 아니다. 빈은 팩토리에 "늦게 로딩"(lazy loading)되는데, 말은 팩토리가 빈의 정의(빈과 특성에 대한 설명) 즉시 로딩하는 반면, 자체가 필요하기 되기 전까지는 인스턴스화하지 않는다는 의미다.

  팩토리로부터 빈을 언어오기 위해서는 아래와 같다.

 

  MyBean myBean = (MyBean) factory.getBean("myBean");

 

getBean(); 호출되면, 팩토리는 의존성 주입을 이용해 빈을 인스턴스화하고 빈의 특성(빈의 set 메소드) 설정하기 시작한다. 이렇게 해서 스프링컨테이너 안에서의 빈의 일생이 시작된다.

 

 

2. 애플리케이션 컨텍스트

 

 표면적으로는 ApplicationContext BeanFactory 상당히 비슷하다. 빈을 로딩하고 빈들을 묶어주며, 요청에 따라 빈을 분배한다. , ApplicationContext 인터페이스가 BeanFactory 인터페이스를 확장한 것이다. 또한 getBean() 메소드를 사용해 ApplicationContext 로부터 빈을 얻을 있다.

차이점은 팩토리는 모든 빈을 늦게 로딩(lazy loading)하는데, 애플리케이션 컨텍스트는  컨텍스트를 시작시킬때 모든 싱클톤 빈을 미리 로딩(preloading)함으로써 빈이 필요할때 즉시 사용될수 있도록 보장해 준다. , 빈이 생성되기를 기다릴 필요가 없다는 것이다.

하지만 모든 객체를 싱클톤으로 생성해 놓는다지만 객체가 많아지면 무거울꺼라는 생각이 든다. 해보지 않아서 추측임.

(싱클톤은 디자인패턴의 일종이다 스스로…. ^^)

 

 ApplicationContext 다음과 같은 추가기능을 제공한다.

 -.국제화(I18N) 지원을 포함해 텍스트 메시지를 해석하는 수단 제공

 -.이미지 등과 같은 자원을 로딩하는 범용적인 방법 제공

 -.리스너로 등록되어있는 빈에 이벤트를 발생할 있음.

 

 BeanFactory 자원이 제약이 따르는 이동통신기기 같은 상황이 아니면 ApplicationContext 사용한다고 한다.

 

ApplicationContext 다양한 구현 클래스 일반적인

 -.ClasspathXmlApplicationContext : 클래스 패스에 있는 XML 파일로부터 컨텍스트 정의를 로딩하며, 컨텍스트 정의를 클래스 패스에 있는 자원으로 취급한다.

 -.FileSystemXmlApplicationContext : 파일 시스템에 있는 XML 파일로부터 컨텍스트 정의를 로딩한다.

 -.XmlWebApplicationContext : 애플리케이션에 포함되어있는 XML 파일로부터 컨텍스트 정의를 로딩한다.

 

) ApplicationContext context = new FileSystemXmlApplicationContext("c:/foo.xml");

    : 특정한 위치에서 foo.xml 찾음.

     ApplicationContext context = new ClassPathXmlApplicationContext("c:/foo.xml");

    : 클래스 패스에 있는 foo.xml 찾음.

2007-01-29 23:23:57
211.189.124.***

서현사랑~ 안녕 안녕 나의 아기별~~

0점 (0명)
덧글 0개 | 태그 1개 | 관련글보기
태그입력
쉽표(,)구분으로 한번에 여러 태그를 입력할수 있습니다
spring (18)
이름 비밀번호
JSP 팁
JSP 팁 게시판 입니다
! 번호 제목 글쓴이 일자 조회
114 STS Spring MVC on STS 2.8, 2.9 버전에서 프로젝트 생성시 에러발생 할 경우 1 GoodBug 2012-03-08 8,034
113 dbcp DBCP 사용시 DB정보 암호화 1 GoodBug 2012-02-08 5,545
112 스트럿츠 action alert 메시지 출력 후 페이지 이동 & 뒤로가기 예방 행복한광대 2009-01-14 11,594
111 spring spring 자동묶기 1 kaiser 2007-03-12 11,804
110 spring Spring 빈묶기- 생성자를 통한 의존성 주입 2 1 kaiser 2007-02-21 21,568
109 spring Spring 빈묶기-세터메소드를 통한 의존성 주입 1 kaiser 2007-02-21 11,870
108 spring Spring - xml로 묶기 1 kaiser 2007-02-07 12,352
107 spring Spring 빈묶기-기본묶기 1 kaiser 2007-02-05 8,771
106 spring spring 빈묶기-2 1 kaiser 2007-01-29 9,636
spring Spring 빈묶기-1 1 kaiser 2007-01-29 9,709
104 spring Spring 1차 요약 1 kaiser 2007-01-23 10,775
103 spring spring 시작하기-2 1 1 kaiser 2007-01-22 9,935
102 spring Spring 시작하기-1 4 1 kaiser 2007-01-22 11,639
101 spring Spring 서론 - spring 설치 1 1 kaiser 2007-01-19 13,318
100 clob 사용하기 kaiser 2008-08-21 7,636
99 span 글쓰기 후 사용할 protoload 1 1 고고싱 2008-05-09 7,127
98 log4sql log4sql 1 1 Aki 2008-04-30 8,360
97 숫자 세자리마다 콤마 찍기 1 곱슬대마왕 2008-03-21 8,467
96 iBatis iBatis 에서 SQL 로깅시 이뿌게 보이기 6 1 GoodBug 2007-10-26 22,569
95 log4sql요즘 많이 쓰는것 같던데.... 영이남푠 2008-10-17 8,086
copyright 2005-2018 by Unicorn