Spring destroy类的顺序通过配置文件中配置“depends-on”来实现,同理init顺序正好相反。
实例:
bean1:
public class Bean1 { public void destroy() { System.out.println("bean1 destroy."); } }
bean2:
public class Bean2 {
public void destroy() {
System.out.println("bean2 destroy.");
}
}
bean3:
public class Bean3 {
// private Bean1 bean1;
public void destroy() {
System.out.println("bean3 destroy.");
}
}
bean4:
public class Bean4 {
private Bean2 bean2;
public void destroy() {
System.out.println("bean4 destroy.");
}
public void setBean2(Bean2 bean2) {
this.bean2 = bean2;
}
}
配置文件:
applicationContext.xml 写道
<bean id="bean1" class="com.alibaba.cep.collection.advice.Bean1" destroy-method="destroy"></bean>
<bean id="bean2" class="com.alibaba.cep.collection.advice.Bean2" destroy-method="destroy"></bean>
<bean id="bean3" class="com.alibaba.cep.collection.advice.Bean3" depends-on="bean1" destroy-method="destroy"></bean>
<bean id="bean4" class="com.alibaba.cep.collection.advice.Bean4" depends-on="bean2" destroy-method="destroy"></bean>
<bean id="bean2" class="com.alibaba.cep.collection.advice.Bean2" destroy-method="destroy"></bean>
<bean id="bean3" class="com.alibaba.cep.collection.advice.Bean3" depends-on="bean1" destroy-method="destroy"></bean>
<bean id="bean4" class="com.alibaba.cep.collection.advice.Bean4" depends-on="bean2" destroy-method="destroy"></bean>
执行mian:
public static void main(String[] args) {
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
ac.destroy();
}
执行结果:
写道
bean4 destroy.
bean3 destroy.
bean2 destroy.
bean1 destroy.
bean3 destroy.
bean2 destroy.
bean1 destroy.