初始化: depends-on
属性可以显式地强制一个或多个 bean 在使用这个元素的 bean 被初始化之前被初始化。
销毁: depends-on
属性指定的那些依赖bean先销毁,使用这个元素的 bean后被销毁,干预了关闭顺序。
结论给完了,我们下面通过案例验证。
public class MyBeanA {
public void init() {
System.out.println("MyBeanA 被初始化-----");
}
public void destroy() {
System.out.println("MyBeanA 被销毁-----");
}
}
public class MyBeanB {
public void init() {
System.out.println("MyBeanB 被初始化-----");
}
public void destroy() {
System.out.println("MyBeanB 被销毁-----");
}
}
public class MyBeanC {
public void init() {
System.out.println("MyBeanC 被初始化-----");
}
public void destroy() {
System.out.println("MyBeanC 被销毁-----");
}
}
package com.crab.spring.ioc.demo04;
/**
* @author zfd
* @version v1.0
* @date 2022/1/13 15:11
* @关于我 请关注公众号 螃蟹的Java笔记 获取更多技术系列
*/
public class Test {
@org.junit.Test
public void test() {
System.out.println("开始创建容器并初始化bean");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("demo04/spring1.xml");
System.out.println("开始关闭容器并销毁bean");
context.close();
}
}
输出结果
开始创建容器并初始化bean
MyBeanA 被初始化-----
MyBeanB 被初始化-----
MyBeanC 被初始化-----
开始关闭容器并销毁bean
MyBeanC 被销毁-----
MyBeanB 被销毁-----
MyBeanA 被销毁-----
初始化的顺序是bean在配置文件中的配置顺序A-B-C
销毁的顺序与初始化顺序相反C-B-A
@org.junit.Test
public void test2() {
System.out.println("开始创建容器并初始化bean");
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("demo04/spring2.xml");
System.out.println("开始关闭容器并销毁bean");
context.close();
}
运行结果
开始创建容器并初始化bean
MyBeanC 被初始化-----
MyBeanA 被初始化-----
MyBeanB 被初始化-----
开始关闭容器并销毁bean
MyBeanB 被销毁-----
MyBeanA 被销毁-----
MyBeanC 被销毁-----
初始化的顺序:C-A-B,不同地方A依赖于C,所以C先初始化,然后到A,顺序再到B
销毁的顺序:B-A-C,销毁A再销毁C
干预初始化:例如当需要触发类中的静态初始化方法来注册数据库驱动程序时候,是依赖于数据库的配置bean先初始化的。
干预销毁:例如我们的清理类A中在销毁方法中保存进程中某些数据到redis,依赖于 RedisTemplate
,则 RedisTemplate
必须在A之后销毁。
本文介绍各种介绍了 depends-on
对bean的初始化和销毁的影响和实际的应用场景。下一篇介绍自动依赖注入。
知识分享,转载请注明出处。学无先后,达者为先!
Original: https://www.cnblogs.com/kongbubihai/p/15845338.html
Author: kongxubihai
Title: Spring系列6:depends-on干预bean创建和销毁顺序
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572064/
转载文章受原作者版权保护。转载请注明原作者出处!