정의

스프링 설정파일에 class를 등록하려면 <bean> 엘리먼트를 사용한다.

이때 id와 class 속성을 사용하는데, id는 생략 가능하다.

 

<bean> 엘리먼트 속성

id 속성 : 자바의 식별자 작성 규칙을 따름(CamelCase)

name 속성 : 자바의 식별자 작성 규칙이 아닌, 특수기호가 포함된 아이디를 <bean>으로 지정할 때 사용함

 

init-method : 스프링 컨테이너는 스프링 설정파일에 등록된 클래스를 객체 생성할 때 디폴트 생성자를 호출한다.

객체를 생성한 후에 멤버변수 초기화 작업이 필요할 때, init-method 속성을 class파일에 사용한다.

즉 <bean>에 등록된 객체가 생성된 후 init-method로 지정된 "initMethod()"를 호출한다. 

// root-context.xml (스프링 설정파일)
<bean id="tv" class="polymorphism.SamsungTV" init-method="initMethod"></bean>
package polymorphism;

public class SamsungTV implements TV {
	public void initMethod(){
    	System.out.println("객체 초기화 작업");
    }
}

 

destroy-method : 스프링 컨테이너가 객체를 삭제하기 직전에 호출될 메소드를 지정할 수 있다.

// root-context.xml (스프링 설정파일)
<bean id="tv" class="polymorphism.SamsungTV" destroy-method="destroyMethod"></bean>
package polymorphism;

public class SamsungTV implements TV {
	public void destroyMethod(){
    	System.out.println("객체 삭제 전에 처리할 로직 처리");
    }
}

 

lazy-init : 스프링 컨테이너가 구동되면, 구동되는 시점에 스프링 설정 파일에 등록된 <bean>들을 생성하는 즉시 로딩 방식으로 동작한다.

자주 사용되지 않으면서 메모리를 많이 차지하여 시스템에 부담을 주는 경우가 있기 때문에, 해당 <bean>이 사용되는 시점에 객체를 생성하도록 lazy-init 속성을 사용한다.

즉 클라이언트가 요청하는 시점에 생성한다.

// root-context.xml (스프링 설정파일)
<bean id="tv" class="polymorphism.SamsungTV" lazy-init="true"></bean>

 

scope="singleton" : 클래스를 하나만 생성하여 유지하고 싶을때 싱글톤 패턴을 사용하는데, 스프링 컨테이너도 이러한 기능을 scope 속성을 통하여 제공한다.

scope 속성값은 기본이 싱글톤이다. (=값을 생략하면 싱글톤으로 적용됨)

// root-context.xml (스프링 설정파일)
<bean id="tv" class="polymorphism.SamsungTV" scope="singleton"></bean>

 

scope="prototype" : 반대로 스프링 컨테이너가 해당 <bean>을 요청될 때마다 매번 새로운 객체를 생성하여 반환할 땐 아래와 같이 사용함.

// root-context.xml (스프링 설정파일)
<bean id="tv" class="polymorphism.SamsungTV" scope="prototype"></bean>

 

+ Recent posts