前言

Spring Bean 的生命周期:init(初始化回调)、destory(销毁回调),在Spring中提供了四种方式来设置bean生命周期的回调:

1.@Bean指定初始化和销毁方法

2.实现接口

3.使用JSR250

4.后置处理器接口

使用场景:

在Bean初始化之后主动触发事件。如配置类的参数。

1.@Bean指定初始化和销毁方法

public class Phone {private String name;private int money;//get setpublic Phone() {super();System.out.println("实例化phone");}public void init(){System.out.println("初始化方法");}public void destory(){System.out.println("销毁方法");}
}
@Bean(initMethod = "init",destroyMethod = "destory")
public Phone phone(){                              return new Phone();
}
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(BeanConfig5.class);
context.close();

打印输出:

实例化phone
初始化方法
销毁方法

2.实现接口

通过让Bean实现InitializingBean(定义初始化逻辑),DisposableBean(定义销毁逻辑)接口

public class Car implements InitializingBean, DisposableBean {public void afterPropertiesSet() throws Exception {System.out.println("对象初始化后");}public void destroy() throws Exception {System.out.println("对象销毁");}public Car(){System.out.println("对象初始化中");}}

打印输出:

对象初始化中
对象初始化后
对象销毁

3.使用JSR250

通过在方法上定义@PostConstruct(对象初始化之后)和@PreDestroy(对象销毁)注解

public class Cat{public Cat(){System.out.println("对象初始化");}@PostConstructpublic void init(){System.out.println("对象初始化之后");}@PreDestroypublic void destory(){System.out.println("对象销毁");}}

打印输出:

对象初始化
对象初始化之后
对象销毁

4.后置处理器接口

public class Dog implements BeanPostProcessor{public Dog(){System.out.println("对象初始化");}public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println(beanName+"对象初始化之前");return bean;}public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println(beanName+"对象初始化之后");return bean;}}
对象初始化
org.springframework.context.event.internalEventListenerProcessor对象初始化之前
org.springframework.context.event.internalEventListenerProcessor对象初始化之后
org.springframework.context.event.internalEventListenerFactory对象初始化之前
org.springframework.context.event.internalEventListenerFactory对象初始化之后

SpringIOC容器 Bean初始化和销毁回调相关推荐

  1. spring bean初始化及销毁你必须要掌握的回调方法。

    转载自 spring bean初始化及销毁你必须要掌握的回调方法. spring bean在初始化和销毁的时候我们可以触发一些自定义的回调操作. 初始化的时候实现的方法 1.通过java提供的@Pos ...

  2. spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入...

    <spring扩展点之二:spring中关于bean初始化.销毁等使用汇总,ApplicationContextAware将ApplicationContext注入> <spring ...

  3. Spring中Bean初始化和销毁的多种方式

    Spring中Bean初始化和销毁的多种方式 一.Bean的多种初始化方式 1.PostConstruct注解 2.实现InitializingBean接口 3.声明init-method方法 二.B ...

  4. springboot bean、容器的初始化,销毁及事件捕捉

    文章目录 1.Bean初始化后执行 2.Spring容器启动后执行 3.Spring 容器各个事件的回调 1.Bean初始化后执行 使用 spring 提供的 @PostConstruct 和 @Pr ...

  5. java两个栈怎么完成初始化_Spring bean初始化及销毁你必须要掌握的回调方法

    spring bean在初始化和销毁的时候我们可以触发一些自定义的回调操作. 初始化的时候实现的方法 1.通过java提供的@PostConstruct注解: 2.通过实现spring提供的Initi ...

  6. ApplicationContext和Bean的初始化和销毁

    本节来学习ApplicationContext和Bean的初始化和销毁 首先看一下ApplicationContext容器的初始化和销毁关闭过程. ApplicationContext启动的过程是在A ...

  7. 从源码深处体验Spring核心技术--基于Xml的IOC容器的初始化

    IOC 容器的初始化包括 BeanDefinition 的 Resource 定位.加载和注册这三个基本的过程. 我们以ApplicationContext 为例讲解,ApplicationConte ...

  8. Spring(二)IOC容器的初始化流程

    文章目录 一.Spring 核心容器类 1.1 BeanFactory 1.2 ApplicationContext 1.3 BeanDefinition 二.IOC容器的初始化 2.1 基于Xml的 ...

  9. SpringIOC容器中Bean的生命周期

    SpringIOC容器 可以管理Bean的生命周期 Spring允许在Bean生命周期的特定点,执行定制的任务. SpringIOC容器中,Bean的生命周期如下: 1.通过构造器或工厂方法创建Bea ...

最新文章

  1. 网络管理员&MCSE2003之5:第1章 帐户和资源管理
  2. 数据结构 - 静态单链表的实行(C语言)
  3. lintcode-49-字符大小写排序
  4. 网易云音乐android api_网易云音乐怎么发布个人Mlog?网易云音乐发布个人Mlog的教程介绍...
  5. 计算机浮点数运算误差与解决误差的算法
  6. 核弹级漏洞,把 log4j 扒给你看!
  7. java自学笔记_JAVA自学笔记(4)
  8. python 自动运维架构师_运维架构师-Python 自动化运维开发-013
  9. 牛客练习赛21:A. 黑妹的游戏I
  10. 吊炸天的Kubernetes微服务图形化管理工具:Kuboard,必须推荐给你!
  11. 自动驾驶中的深度学习
  12. win7发现不了无线网络_Win7笔记本怎么设置wifi热点 Win7笔记本设置wifi热点方法【详解】...
  13. 基于数组的一个简单增删改查
  14. c语言编辑工具下载,Turbo C-Turbo C2.0-Turbo C下载 v2.0.0.0官方正式版-完美下载
  15. Jtopo对象属性大全
  16. 50份Word简历模板,全都免费领取,送给最需要的你
  17. 两张表之间进行数据库查询时的聚合函数用法
  18. matlab遥感图像分类
  19. STM32定时器产生指定个数脉冲
  20. 【笔记】两个根因分析方法:5WHYamp;10WHY

热门文章

  1. 关于在MicroSoftWord中添加MathType加载项
  2. 多个字典合并为数据框
  3. 业务场景可以从哪方面考虑
  4. Flutter层叠布局 Stack、Positioned
  5. 手机APP制作流程一、Java JDK、Android studio、夜神模拟器安装
  6. ES6的介绍以及模块导出与导入
  7. Python爬虫脚本,利用Beautifulfly爬取动态网页网页(源码)
  8. URI是什么,在Android中有什么作用?
  9. Linux怎么卸载openmpi,openmpi安装
  10. 土肥圆的并行学习日记