Bean的生命周期
来源:互联网 发布:mac玩fifaonline3发烫 编辑:程序博客网 时间:2024/05/22 06:52
一般来说,prototype作用域的Bean,Spring仅仅负责创建,当创建了Bean实例之后,该实例将完全交给客户端代码去管理,Spring容器不再跟踪其生命周期。而对于singleton作用域的Bean,每次客户端代码请求时都会共享同一个Bean实例,因此singleton作用域的Bean的生命周期由Spring容器负责。
对于singleton作用的Bean,Spring容器知道它何时实例化结束,何时销毁,因此Spring可以管理实例化结束之后和销毁之前的行为。分别为:
1>注入依赖关系之后
2>即将销毁Bean之前
Spring提供两种方式来管理Bean依赖关系注入之后的行为:
1>使用init-method属性指定Bean初始化完成之后自动调用该Bean实例的哪个方法 2>实现InitializingBean接口。实现该接口需要实现一个抽象方法:void afterPropertiesSet() throws Exception ;
public class Person implements InitializingBean{ private String username ; private String password ; private int age ; private String description ; //omit setter and getter methods @Override public void afterPropertiesSet() throws Exception { System.out.println("Person Bean初始化完成") ; } public void initOK() { System.out.println("使用init-method属性指定初始化完成之后的动作") ; }}//在配置文件中配置该Bean<bean id="persion" class="Person" init-method="initOK"> <property name=“username” value="chengxi" /> <property name="password" value="1123" /> <property name="age" value="20" /> <property name="description" value="这是一个简单的实例" /></bean>//在main程序中测试public class Test{ public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml") ; Person person = context.getBean("person") ; }}//在控制台将会输出:Person Bean初始化完成 使用init-method指定初始化完成之后的动作
同样,Spring也提供两钟方式来定制销毁Bean对象之前的行为:
1>使用destroy-method属性指定销毁对象之前的行为方法 2>实现DisposableBean接口并实现其抽象方法:void destroy(0 throws Exception;来指定销毁对象之前的行为
public class Person implements DisposableBean{ //继上面的Person之后新增两个方法 @Override public void destroy() throws Exception { System.out.println("接下来将要销毁Person Bean实例") ; } public void destroymethod() { System.out.println("指定destroy-method属性来指定销毁对象之前的行为") ; }}//配置bean的destroy-method属性值为destroymethod ;//调用main程序测试public class test{ public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml") ; Person person = context.getBean("person",Person.class) ; //为Spring容器注册关闭钩子来检验销毁之前的行为是否执行 context.registShutdiwnHook() ; }}
ApplicationContext.registShutdownHook()方法为Spring容器注册了一个关闭钩子,程序将会在退出JVM之前先关闭Spring容器,这样就可以保证关闭Spring容器之前调用singleton Bean实例的析构回调函数
0 0
- 会话bean的生命周期
- 会话bean的生命周期
- bean的生命周期
- Session Bean 的生命周期
- Bean的生命周期
- Spring3 bean的生命周期
- Spring Bean的生命周期
- bean 实例的生命周期
- Bean的生命周期
- Spring Bean的生命周期
- bean的生命周期
- spring - bean的生命周期
- Bean的生命周期
- Spring Bean的生命周期
- spring bean 的生命周期
- bean的生命周期
- Spring bean的生命周期
- spring bean的生命周期
- CSS基础学习2-CSS设置颜色与背景
- 安装破解torando记录
- Object——equals()方法与==运算符
- 安卓简单技术-Webview自适应手机屏幕
- vmware虚拟机与主机之间复制文件
- Bean的生命周期
- 重载/覆盖
- EventBus基本使用简介
- sharepoint 2016 弹出新窗口并返回值的方法
- iOS 如何删除利用cocoapods导入的第三方
- kafka 设置auto.offset.reset
- Android 5.1高通方案增加GPIO按键
- Androi开发运行项目报异常:The library '*.jar' contains native libraries that will not run on the device
- CentOS6.8配置Mysql数据库主从复制