[Spring기초] 모든 Bean 생성, 종료 메소드 실행(default-init-method, defalut-destroy-method)
[Spring] 2019. 10. 11. 20:16- 이 글은 아래의 내용에서 이어지는 내용입니다.
# Bean이 생성될 때, 모든 Bean의 init와 destory를 실행하기
- beans.xml에서 init-method, destory-method와 xml에서 지정되는 defalut-init-method와 defalut-destory-method의 차이점을 유의하시면 좋을 것 같습니다.
1. TestBean1.java , TestBean2.java ,TestBean3.java
- TestBean1.java에는 init-method, destory-method만 명시
- TestBean2.java에는 defalut-init-method , defalut-init-destroy만 명시
- TestBean3.java에는 init-method, destory-method, defalut-init-method , defalut-init-destroy 명시
package beans;
public class TestBean1 {
public TestBean1() {
System.out.println("TestBean1 Created");
}
// 생성자 호출 후 자동으로 실행
public void bean1Init() {
System.out.println("TestBean1의 init 메서드");
}
// ClassPathXmlApplicationContext close 될 때 모든 메소드가 호출 된다.
public void bean1Destory() {
System.out.println("TestBean1의 destory 메소드");
}
}
package beans;
public class TestBean2 {
public TestBean2() {
System.out.println("TestBean2 Created");
}
// 자동으로 생성될 때 호출
public void defalutInit() {
System.out.println("defalut init");
}
// 자동으로 없어질 때 호출
public void defalutDestory() {
System.out.println("defalut destory");
}
}
package beans;
public class TestBean3 {
public TestBean3() { // --1
System.out.println("TestBean3 Created");
}
// 자동으로 생성될 때 호출
public void defalutInit() {
System.out.println("TestBean3 : defalut_init");
}
// 자동으로 없어질 때 호출
// 가장 마지막으로 실행된다.
public void defalutDestory() { // -- 4
System.out.println("TestBean3 : defalut_destory");
}
// 생성자 호출 후 자동으로 실행
public void bean3Init() { // --2
System.out.println("TestBean3의 init 메서드");
}
// ClassPathXmlApplicationContext close 될 때 모든 메소드가 호출 된다.
// Bean에서 지정된거 보다 먼저 실행된다
public void bean3Destory() { // --3
System.out.println("TestBean3의 destory 메소드");
}
}
2. beans.xml에 init-method,destory-method,defalut-init-method,defalut-init-destroy를 명시.
- TestBean1.java에는 init-method, destory-method만 명시
- TestBean2.java에는 defalut-init-method , defalut-init-destroy만 명시
- TestBean3.java에는 init-method, destory-method, defalut-init-method , defalut-init-destroy 명시
<?xml version="1.0" encoding="UTF-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"
default-init-method="defalutInit"
default-destroy-method="defalutDestory">
<!-- bean id 값으로 객체를 불러올 거라 bean id 값을 부여하였습니다. -->
<!-- init-method와 destory-method에 TestBean.java 시작, 종료 메소드를 지정합니다. -->
<bean id="test1" class="beans.TestBean1" lazy-init="true"
init-method="bean1Init" destroy-method="bean1Destory"></bean>
<!-- bean에는 명시하지 않고, xml 상단에 defalut로 명시합니다. -->
<bean id="test2" class="beans.TestBean2" lazy-init="true"></bean>
<!-- bean에도 명시하고 , xml 상단에 defalut로 명시합니다. -->
<bean id="test3" class="beans.TestBean3" lazy-init="true"
init-method="bean3Init" destroy-method="bean3Destory"></bean>
</beans>
3. Main.java에서 실행하기.
package main;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import beans.TestBean1;
import beans.TestBean2;
import beans.TestBean3;
public class Main {
public static void main(String[] args) {
System.out.println("-1------------");
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("config/beans.xml");
// init-method, destory-method 지정
TestBean1 t1 = ctx.getBean("test1", TestBean1.class);
// defalut-init-method, defalut-destory-method 지정
TestBean2 t2 = ctx.getBean("test2", TestBean2.class);
// init-method, destory-method, defalut-init-method, defalut-destory-method 지정
TestBean3 t3 = ctx.getBean("test3", TestBean3.class);
ctx.close();
System.out.println("-ctx.close() 됨");
}
}
4. 결과화면
- TestBean1은 생성자와 지정된 메소드 출력.
- TestBean2은 생성자와 defalut 메소드 출력.
- TestBean3은 생성자와 defalut와 지정된 메소드가 있지만 지정된 메소드만 출력.
'[Spring]' 카테고리의 다른 글
[Spring기초] 의존성 주입:DI(Dependency Injection) - Setter DI (0) | 2019.10.13 |
---|---|
[Spring기초] 모든 Bean이 생성 시 실행되는 메소드(BeanPostProcessor) - BeanLifeCycle (0) | 2019.10.12 |
[Spring기초] Bean 초기화, 종료 메소드 실행(init-method, destroy-method) (0) | 2019.10.11 |
[Spring기초] Bean 생성시점, 싱글톤 문제(lazy-init, scope) (0) | 2019.10.11 |
[Spring기초] bean 생성하기(XML로 생성) (0) | 2019.10.11 |