본문 바로가기

Java/Spring

init-method/destroy-method

init-method/destroy-method

스프링에서 Bean 속성으로 init-methoddestroy-method를 사용해 초기화 및 소멸 시 특정 동작을 수행할 수 있다. 

수정이 불가해 InitializingBean 및 DisposableBean 인터페이스를 상속받을 수 없는 경우의 대안이 될 것이다. (일반적으로 상속보다 권장된다)

예제

아래와 같은 CustomerService 클래스가 있다.
public class CustomerService{
    String message;
    
    public String getMessage() {
      return message;
    }
 
    public void setMessage(String message) {
      this.message = message;
    }
    
    public void initIt() throws Exception {
      System.out.println("Init method after properties are set : " + message);
    }
    
    public void cleanUp() throws Exception {
      System.out.println("Spring Container is destroy! Customer clean up");
    }
    
}
cs

xml

bean태그의 속성에 init-method, destory-method 밸류값으로 각각 초기화/소멸 과정에서 사용될 메서드 이름을 부여한다.
<bean id="customerService" class="services.CustomerService" 
        init-method="initIt" destroy-method="cleanUp">
    <property name="message" value="i'm property message" />
</bean>
cs

Java

xml이 아니라 자바 설정을 사용하는 경우에는 @bean 어노테이션에서 속성을 사용하면 된다.
@Bean(initMethod="initIt" destroyMethod="cleanUp")
cs

또는 @bean 어노테이션이 적용된 메서드에서 직접 초기화 메서드를 실행할 수도 있다.