一文搞懂Spring中Bean的生命周期

网友投稿 304 2022-07-26


目录一、使用配置生命周期的方法二、生命周期控制——接口控制(了解)小结

生命周期:从创建到消亡的完整过程

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小时内删除侵权内容。

上一篇:SpringBoot多数据源读写分离的自定义配置问题及解决方法
下一篇:RestTemplate的URL请求示例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~