随着数字化转型的不断深入,小程序技术标准如何在金融、安全和物联网等领域实现高效合规运营?
706
2022-10-01
一文搞懂Spring中Bean的生命周期
目录一、使用配置生命周期的方法二、生命周期控制——接口控制(了解)小结
生命周期:从创建到消亡的完整过程
bean声明周期:bean从创建到销毁的整体过程
bean声明周期控制:在bean创建后到销毁前做一些事情
一、使用配置生命周期的方法
在BookDaoImpl中实现类中创建相应的方法:
//表示bean初始化对应的操作
public void init(){
System.out.println("init...");
}
//表示bean销毁前对应的操作
public void destory(){
System.out.println("destory...");
}
applicationContext.xml配置初始化声明周期回调函数及销毁声明周期回调函http://数
执行结果:
虚拟机退出,没有给bean销毁的机会。
可利用ClassPathXmlApplictionContext里的close方法主动关闭容器,就会执行销毁方法。
import com.itheima.dao.BookDao;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class AppForLifeCycle {
public static void main( String[] args ) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
BookDao bookDao = (BookDao) ctx.getBean("bookDao");
bookDao.save();
//关闭容器
ctx.close();
}
}
执行结果:
不过这种方式比较暴力,容器还提供另外的方法
在AppForLifeCycle中用关闭钩子函数
//注册关闭钩子函数,在虚拟机退出之前回调此函数,关闭容器
ctx.registerShutdownHook();
执行结果:
关闭钩子在任何时间都可以执行,close关闭比较暴力。
二、生命周期控制——接口控制(了解)
applicationContext.xml配置:
BookServiceImpl:
可以利用接口InitializingBean和DisposableBean来设置初始化和销毁后的方法设置
import com.itheima.dao.BookDao;
import com.itheima.service.BookService;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
public class BookServiceImpl implements BookService, InitializingBean, DisposableBean {
private BookDao bookDao;
public void setBookDao(BookDao bookDao) {
System.out.println("set .....");
this.bookDao = bookDao;
}
public void save() {
System.out.println("book service save ...");
bookDao.save();
}
public void destroy() throws Exception {
System.out.println("service destroy");
}
public void afterPropertiesSet() throws Exception {
System.out.println("service init");
}
}
执行结果:
可以看出set在执行在init的执行之后,当你的属性设置完以后,才去执行afterPropertiesSet,所有才叫afterPropertiesSet,在属性设置之后。
小结
生命周期总结
初始化容器
1、创建对象2、执行构造方法3、执行属性注入(set操作)4、执行bean初始化方法
使用bean
执行业务操作
关闭/销毁容器
执行bean操作
1、bean生命周期控制
配置
init-methoddestroy-method
接口(了解)
InitializingBeanDisposableBean
2、关闭容器
ConfigurableApplicationContext
close()registerShutdownHook()
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~