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

이론상으로는 프로퍼티 파일, RDB , LDAP 디렉토리등 어떠한 것으로도 묶기를 설정할 있다.

그러나 여기서는 xml 이용한다.

다음과 같은 여러 스프링 컨테이너가 XML 통한 묶기를 지원한다.

 

-. XmlBeanFactory : org.springframework.core.io.FileSystemResource 사용해 컨텍스트 정의 파일을 로딩하는 단순한 BeanFactory

-. ClassPathXmlApplicationContext : 클래스 경로로부터 컨텍스트 정의 파일을 로딩하는 애플리케이션 컨텍스트

-.FileSystemXmlApplicationcontext : 파일 시스템으로부터 컨텍스트 정의 파일을 로딩하는 애플리케이션 컨텍스트

-.XmlWebApplicationContext : 애플리케이션 컨텍스트로부터 컨텍스트 정의 파일을 로딩하는 애플리케이션 컨텍스트. 나중에 알아보기로 .

 

간단한 예제

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

 

<!--  루트 요소 -->

<beans> 

  <!--  인스턴스 아래 2 -->

  <bean id="foo"

      class="org.springframework.Foo">

  </bean>

  <bean id="bar"

      class="org.springframework.Bar">

  </bean>

</beans>

 

위는 xml 이용한 간단한 묶기이다. 스프링컨테이너에 foo bar이라는 두개의 빈을 묶었다.

엄밀히 말하자면 빈만 등록한 것이다.

 

빈추가

 

스프링 컨테이너 안에 빈을 묶으려면 빈의 ID 풀경로의 클래스이름이 필요하다.

<bean id="foo"   class="org.springframework.Foo"/>

      빈의 ID              빈의 풀경로의 클래스 이름

 

[참고 ]

<bean id="foo"  class="org.springframework.Foo"></bean>

<bean id="foo"  class="org.springframework.Foo"/> 동일하다

 

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

  <bean id="studentDao"

      class="com.springinaction.training.dao.StudentDaoImpl">

  </bean>

  <bean id="courseDao"

      class="com.springinaction.training.dao.CourseDaoImpl">

  </bean>

</beans>

 

 

 

프로토타입과 싱글톤 비교

 

기본적으로 spring 모든 빈들은 싱글톤이다. getBean() 호출에 의해서든 묶기를 통해서든 간에, 컨테이너가 빈을 배포할 때에는 항상 빈의 완전힌 동일한 인스턴스를 내줄것이다. , 객체를 하나 만들어서 사용한다. 만약 호출시 마다 새로운 인스턴스가 생성되기를 원한다면 아래와 같이 사용한다.

 

<bean id="foo"  class="org.springframework.Foo"   singleton = "false"/>

 

프로토타입 빈은 데이터베이스나 네트워크 연결과 같은 제한된 자원을 사용하는 빈의 경우에는 나쁜 방법이다. Singleton false 설정하는 경우는 절대적으로 필요한 경우에만 사용하기 바란다.

 

 

초기화와 소멸

 

빈이 인스턴스화될 때에는 사용할 있는 상태가 되기 위해 초기화 되거나 이상 사용하지 않아 컨테이너로부터 제거될때에 일련의 작업을 해야 경우가 있다

Spring에서는 빈의 초기화와 소멸에 관하여 2개의 메소드를 제공한다.

 

빈의 정의내에 커스텀 init-method 선언함으로써 빈이 인스턴스화되는 즉시 호출될 메소드를 지정할 있다. 마찬가지로 커스텀 destroy-method 빈이 컨테이너로부터 제거되기 직전에 호출된다.

 

<bean id="foo"  class="org.springframework.Foo" 

  init-method = "setup"  destroy-method = "teardown"  />

 

전형적인 예로, 다음과 같은 커넥션 풀링 빈을 들수 있다.

 

public class MyConnectionPool {

public void initialize(){

// 커넥션 초기화

}

public void close(){

//커넥션 연결 해제

}

}

 

빈의 정의는 다음과 같이 있다.

 

<bean id="connectionPool"  class="com.springinaction.chaper02.MyConnectionPool" 

  init-method = "initialize"  destroy-method = "close"  />

 

이렇게 정의하면, MyConnectionPool 인스턴스화 되자마자 initialize() 메소드가 호출되어 커넥션 풀을 초기화 있고, 마찬가지로 MyConnectionPool 컨테이너로부터 제거되기 직전에 close() 메소드가 호출되어 데이터베이스 리소스를 해제할 있을 것이다.

기본적으로 싱글톤으로 객체가 생성되어진다. 하지만 굳이 커넥션 풀을 구현해서 사용할 필요가 없다.

Common-DBCP WAS에서 지원하는 객체를 사용하는것이 낫을것 같다.

그냥 이렇게 쓴다는 것말 알면 될것 같다.

 

Spring InitializingBean DisposableBean이라는 동일한 역할을 하는 두개의 인터페이스를 제공한다.

InitializingBean 인터페이스는 afterPropertiesSet()이라는 하나의 메소드를 제공하는데, 메소드는 해당 빈이 초기화 된후에 한번 호출된다. 마찬가지로 DisposableBean 인터페이스는 해당 빈이 컨테이너로 부터 제거될때 destroy() 메소드가 호출된다.

 

방법의 장점은 이들 인터페이스를 구현하는 빈을 spring 컨테이너가 알아서 호출해 준다는 것이고 단점은 커플링 생긴다는 점이다.

책에서는 spring 인터페이스를 사용할 경우는 spring 컨테이너 안에서 특별하게 사용될 프레임워크 빈을 개발할 때뿐이라 한다.

2007-02-10 01:40:57
211.189.124.***

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

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