Spring - Java를 이용한 init-method, destroy-method

2020. 8. 19. 22:17Java/Spring

반응형

Java 파일을 이용하여 빈을 설정 할 때 xml에서 쓰던 것과 마찬가지로  init-method, destroy-method를 설정 가능하다.

 

다음과 같은 TestBean1 클래스가 있다.

public class TestBean1 {

	public TestBean1() {
		System.out.println("TestBean1");
	}
	
	public void init() {
		System.out.println("init");
	}
	
	public void destroy() {
		System.out.println("destroy");
	}
}

 

기존의 xml에서 init,destroy를 설정하기 위해서는 아래와 같이 작성했다.

<bean id="t1" class="cookingcoding.beans.TestBean1" lazy-init="true" init-method="init" destroy-method="destroy"/>

해당 빈 객체가 생성되면서 init 메소드가 호출되고, 해당 빈 객체가 사라질 때 destroy 메소드가 호출된다.

 

Java 파일에서 해당 기능을 설정하기 위해서는 아래와 같이 적어준다.

 

@Configuration
public class beanconfig {

	@Bean(initMethod = "init",destroyMethod = "destroy")
	public TestBean1 java1() {
		TestBean1 t1 = new TestBean1();
		return t1;
	}
}

@Bean의 ()내부에 선언함으로 같은 기능이 적용 가능하다.

 


public class MainClass {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("cookingcoding/config/beans.xml");
		
		TestBean1 t1 = ctx.getBean("t1",TestBean1.class);
		
		ctx.close();
		
		AnnotationConfigApplicationContext ctx2 = new AnnotationConfigApplicationContext(beanconfig.class);
		
		TestBean1 t2 = ctx2.getBean("java1",TestBean1.class);
		
		ctx2.close();
	}

}

 

반응형