Bean生命周期(2)---Spring源码从入门到精通(八)
2021/6/28 22:21:03
本文主要是介绍Bean生命周期(2)---Spring源码从入门到精通(八),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
上篇文章介绍了,可以通过@Bean注解来指定bean创建和销毁方法,init-method和destory-method:
Bean生命周期(1)---Spring源码从入门到精通(七)
这篇主要介绍,InitializingBean, DisposableBean接口 和 @PostConstruct,@PreDestroy注解来实现bean生命周期创建和销毁方法的调用。
1、InitializingBean, DisposableBean
先定义Dog类,实现这两个接口,重写destroy销毁方法,此方法在容器关闭时候调用,重写afterPropertiesSet方法,此方法在容器创建时候调用,意思就是属性设置好之后调用,给Dog类加上前面文章介绍过的@Compoment注解,之后再在config类加上@ComponentScan注解指定扫描的包目录,代码如下:
@Component public class Dog implements InitializingBean, DisposableBean { public Dog(){ System.out.println("Dog... construct"); } /** * 销毁方法 * @throws Exception */ public void destroy() throws Exception { System.out.println("Dog... destory"); } /** * 初始化方法 * @throws Exception */ public void afterPropertiesSet() throws Exception { System.out.println("Dog afterPropertiesSet ..."); } }
@Configuration @ComponentScan("com.alibaba.bean") public class ConfigLifeCycle { //@Scope("prototype") @Bean(initMethod = "init", destroyMethod = "destory") public Car car(){ return new Car(); } }
junitTest代码和上篇文章一样,不变,为了方便理解,我也重新贴一下:
@Test public void test() { AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext( ConfigLifeCycle.class); System.out.println("容器创建完毕"); //多实例情况下,需要获取组件,才会初始化,并且不会销毁 //Object carObject = annotationConfigApplicationContext.getBean("car"); //getDefinitionNames(annotationConfigApplicationContext); annotationConfigApplicationContext.close(); }
这时候,我们会打印出来,对象创建construct,初始化init和销毁:
2、@PostConstruct,@PreDestroy
定义cat类,给init和destory方法加这两个注解,顾名思义,PostConstruct注解意思在对象创建之后调用的方法,PreDestroy在销毁之前调用的方法,同样加上component注解,方便一会扫描,代码如下:
@Component public class Cat { public Cat(){ System.out.println("Cat...construct"); } /** * construct 构造函数创建对象之后执行 */ @PostConstruct public void init(){ System.out.println("cat ...PostConstruct."); } /** * 销毁之前调用 */ @PreDestroy public void destory(){ System.out.println("cat ...PreDestroy"); } }
junitTest不变,打印之后如下,正常调用destory和init方法:
这篇关于Bean生命周期(2)---Spring源码从入门到精通(八)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求
- 2024-10-01使用 golang 将ETH账户的资产平均分散到其他账户
- 2024-10-01JWT用户校验课程:从入门到实践
- 2024-10-01Server Component课程入门指南