본문 바로가기

Spring

[Spring] 스프링 XML 설정

스프링 컨테이너

스프링 컨테이너는 <bean>의 생명주기를 관리하고 여러 가지 기능을 제공한다.

 

<beans> 엘리먼트

<beans>는 루트 엘리먼트로 사용하고 엘리먼트 시작 태그에 네임스페이스를 비롯한 XML 스키마 관련 정보가 설정된다.

 

<import> 엘리먼트

스프링 기반의 어플리케이션은 트랜젝션, 다국어 처리, 예외 처리 등 다양한 처리가 필요하다. 하나의 XML파일로 모두 처리가 가능하지만 기능별로 여러 XML파일을 나누어 관리하는 것이 더 효율적이다. 기능별로 나누어진 XML파일을 통합할 때 사용하는 엘리먼트가 <import>엘리먼트이다.

<import resource= "context-datasource.xml"/>

<import resource= "context-transaction.xml"/>

 

<bean> 엘리먼트

스프링 설정 파일에 클래스를 등록하는 엘리먼트이다. 속성으로는 id와 name, class가 있다. id 속성은 생략 가능, class 속성은 생략 불가능하다. class속성은 패키지 경로와 클래스명을 작성한다. id 속성은 숫자로 시작, 공백이 포함, 특수기호를 사용하게 되면 에러를 발생시킨다. 하지만 name 속성은 id와 같은 기능을 하지만 문자열도 허용한다.

 

<bean> 엘리먼트 속성

1. init-method

<bean id="tv" class="com.tistory.chaengstroy.TV" init-method="initMethod"/>

객체생성 후 멤버변수 초기화 작업이 필요할 때 사용.

 

2. destroy-method

<bean id="tv" class="com.tistory.chaengstroy.TV" destroy-method="destroyMethod"/>

객체를 삭제하기 직전에 호출될 임의의 메소드를 지정.

 

3. lazy-init

<bean id="tv" class="com.tistory.chaengstroy.TV" lazy-init="true"/>

컨테이너 구동되는 시점이 아닌 <bean>이 사용되는 시점에 객체 생성, 미리 생성하지 않고 클라이언트가 요청하는 시점에 생성하기 때문에 메모리 관리에 효율적.

 

4. scope

<bean id="tv" class="com.tistory.chaengstroy.TV" scope="singleton"/>

<bean id="tv" class="com.tistory.chaengstroy.TV" scope="prototype"/>

scope 속성에 기본값은 singleton이다. 해당 bean이 스프링 컨테이너에 의해 단 하나만 생성되어 운용되도록 한다. 생략가능                  prototype은 bean이 요청될 때마다 매번 새로운 객체를 생성하여 반환