Spring IOC 容器可以管理Bean的生命周期,Spring允许在Bean生命周期的特定点执行定制的任务

Spring IOC 容器对Bean的生命周期进行管理的过程:

1、通过构造器或工厂方法创建Bean的实例

2、为Bean的属性设置值和对其他Bean的引用

3、调用Bean的初始化方法

4、Bean可以使用了

5、当容器关闭时,调用Bean的销毁方法

bean文件

package com.spring.cycle;public class Car {public Car(){System.out.println("Car's constructor...");}@Overridepublic String toString() {return "Car [brand=" + brand + "]";}private String brand;public void setBrand(String brand){System.out.println("setBrand...");this.brand = brand;}public void init(){System.out.println("init...");}public void destroy(){System.out.println("destroy...");}}

配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><bean id="car" class="com.spring.cycle.Car" init-method="init" destroy-method="destroy"><property name="brand" value="Audi"></property></bean><bean class="com.spring.cycle.MyBeanPostProcesser"></bean>
</beans>

package com.spring.cycle;import org.springframework.context.support.ClassPathXmlApplicationContext;public class main {public static void main(String[] args) {ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("bean-cycle.xml");Car car = (Car)ctx.getBean("car");System.out.println(car);//关闭IOC容器
        ctx.close();}
}

postProcessAfterInitialization 和 postProcessBeforeInitialization

package com.spring.cycle;import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;public class MyBeanPostProcesser implements BeanPostProcessor {public Object postProcessAfterInitialization(Object arg0, String arg1)throws BeansException {System.out.println("postProcessAfterInitialization"+arg1);return arg0;}public Object postProcessBeforeInitialization(Object arg0, String arg1)throws BeansException {System.out.println("postProcessBeforeInitialization"+arg1);return arg0;}}

bean的生命周期

Car's constructor... 【调用构造器】
setBrand... 【设置属性】
postProcessBeforeInitializationcar 【实例化方法前】
init...【实例化bean】
postProcessAfterInitializationcar 【实例化方法后】
Car [brand=Audi] 【调用toString()方法】
destroy... 【销毁bean】

转载于:https://www.cnblogs.com/cklovefan/p/5293180.html

Spring4.0学习笔记(5) —— 管理bean的生命周期相关推荐

  1. Vue 学习笔记(2)Vue 生命周期、组件

    Vue Vue 生命周期 Vue 中组件(Component) 全局组件的开发 局部组件的开发 组件中 props 的使用 在组件上声明静态数据传递给组件内部 在组件上声明动态数据传递给组件内部 pr ...

  2. Spring4.0学习笔记(3) —— Spring_Bean之间的关系

    1.继承关系 bean-relation.xml <?xml version="1.0" encoding="UTF-8"?> <beansx ...

  3. EJB3.0学习笔记---Stateless Session Bean的原理:

    新年啦:开通自己的CSDN博客:http://blog.csdn.net/lidew521/ 1.Stateless Session Bean的原理:不是说EJB不可以有状态,而是说EJB不对他 的状 ...

  4. EJB3.0学习笔记-----Stateful Session Bean的原理

    和Http Session十分的类似:    EJB服务器返回的是一个实现了FirstEjb接口的一个代理对象.    EJB池中有很多对象;一个EJB可能有多个对象,和Session对象一样,多个对 ...

  5. Spring管理Bean的生命周期

    1.通过构造器或工厂方法创建对象 2.注入属性 3.后置处理器前置处理 4.调用初始化方法 5.后置处理器后置处理 6.使用Bean 7.销毁Bean

  6. NPDP学习笔记(七)产品生命周期

    这是本主题笔记最后一篇,最近由于身体不好,工作上也遇到了很多坎坷,很久没有更新.意外竟然有读者留言询问,很开心能带给别人些许价值,故将本主题更新完整!避免太监~

  7. libgdx 学习笔记七 libgdx应用程序生命周期

    简介 本章内容描述libGDX 应用程序的结构和怎么根据不同的平台版本使用不同的后台 The Application 做为任意libGDX 工程的主入口点.Application 决定平台的版本和后台 ...

  8. Spring全家桶(四)Bean的生命周期

    十.Bean生命周期 10.1 Bean的生命周期 Spring IOC容器可以管理Bean的生命周期,也允许在Bean生命周期的特定点执行定制的任务. Spring IOC容器对Bean的生命周期进 ...

  9. IOC容器中bean的生命周期,iocbean生命周期

    原文地址:http://www.bkjia.com/Javabc/1149957.html IOC容器中bean的生命周期,iocbean生命周期 一.Bean的生命周期 Spring IOC容器可以 ...

最新文章

  1. 利用Caffe训练模型(solver、deploy、train_val) + python如何使用已训练模型
  2. VMware 虚拟化编程(11) — VMware 虚拟机的全量备份与增量备份方案
  3. 润乾报表与DERBY数据库的创建连接详解
  4. Android中利用OpenMax 编程的基本流程
  5. (65)DDR工作效率?
  6. SVM支持向量机习题解答
  7. Idea中上传项目到Github
  8. php codeigniter,PHP项目中CodeIgniter使用的一些建议
  9. DIY,PC采购,服务器介绍
  10. 软件质量保证和软件配置管理
  11. 无穷小微积分词汇索引怎么使用?
  12. 微信支付/退费(服务商)模式
  13. 【数论】因数与倍数(一)质数与合数
  14. LaTeX 注释快捷键
  15. 计算机图形学三(补充):重心坐标(barycentric coordinates)详解及其作用
  16. 【2020.12】Aspose.words 20.12最新版Crack,word转pdf去水印方法
  17. spingMVC 引用实体类绑定,中文乱码过滤器,时间类型转换器 。案例配置步骤
  18. 实现doubly-linked list搞清楚了一个内存问题
  19. Webex Player 安装文件,解决了不能播放问题,win7也能使用
  20. 【Unity Shader】屏幕后处理2.0:实现Sobel边缘检测

热门文章

  1. 图像超分辨率增强ESRGAN运行教程,有数据
  2. 基于web的通用文本标注工具MarkTool in NLP
  3. 文本分类器,可自由加载BERT、Bert-wwm、Roberta、ALBert以及ERNIE1.0
  4. 如何选择神经网络的超参数
  5. c语言计算器程序代码 链栈,【C语言】简易科学计算器源代码(链栈应用)(原创).doc...
  6. python在linux编程_python要在linux下编程吗
  7. C语言中忽略scanf的价值,c语言的scanf接收到底是忽略空格还是不忽略呢?
  8. java多端登录_【Java】一个登录功能也能玩出这么多花样?sa-token带你轻松搞定多地登录、单地登录、同端互斥登录...
  9. python的networkx 算法_python图算法库Networkx笔记 - Node and Centrality
  10. [每日一题] OCP1z0-047 :2013-07-15 drop column