Bean的生命周期

1)实例化Bean
对于BeanFactory容器,当客户向容器请求一个未初始化的bean时,或初始化bean的时候需要注入另一个未初始化的依赖时,容器就会调用createBean进行实例化,对于ApplicationContext容器,当容器启动结束后,通过获取BeanDefinition对象中的信息,实例化所有Bean

2)设置对象属性(依赖注入)

实例化后的对象被封装在BeanWrapper对象中,之后Spring根据BeanDefiniton中的信息以及通过BeanWrapper提供的设置属性的接口完成依赖注入

3)处理Aware接口

接着Spring会检测该对象是否实现了Aware接口,并将相关的Aware实例注入给Bean
①如果这个Bean已经实现了BeanNameAware接口,会调用它实现的setBeanName(String beanld)方法,此处传递的就是Spring配置文件中Bean的id值
②如果这个Bean已经实现了BeanFactoryAware接口,会调用它实现的setBeanFactory()方法,传递的时Spring工厂自身
③如果这个Bean已经实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文

4)BeanPostProcessor

如果想对Bean进行一些自定义的处理,那么可以让Bean实现BeanPostProcessor接口,会调用postProcessBeforeInitialization(Object obj,String s)方法

5)InitializingBean与init-method

如果这个Bean在Spring配置文件中配置了init-method属性,则会自动调用其它配置的初始化方法

6)如果这个Bean实现了BeanPostProcessor接口,将会调用 postProcessAfterInitialization方法;由于这个方法是在Bean初始化结束时调用的,所以可以被应用在内存或缓存技术
以上几个步骤完成后,Bean就被完全创建了,之后就可以使用这个Bean了

7)DisposableBean

当Bean不需要时,会经过清理阶段,如果Bean实现了DisposableBean这个接口,会调用其它实现的destroy方法

8)detroy-method

最后,如果这个Bean的Spring配置中配置了destroy-method属性,会自动调用配置的销毁方法

示例

Step1:修改实体对象

新增三个方法,在实体里加和其它业务层类加是一样的,这里只是演示执行流程

/*** 视频对象*/
public class Video {private int id;private String title;private Video(){System.out.println("video 空构造函数被调用");}/*** 初始化操作*/public void init(){System.out.println("video 类 init方法被调用");}/*** 销毁操作*/public void destroy(){System.out.println("video 类 destroy方法被调用");}}

Step2:bean对象配置

    <!--init-method:指定初始方法destroy-method:指定销毁方法--><bean id="video" class="net.jhclass.project.domain.Video" scope="singleton" init-method="init" destroy-method="destroy"><property name="id" value="9"/><property name="title" value="测试Spring注入"/></bean>

Step3:测试

直接获取Bean对象即可

public class App {public static void main(String [] args){//获取Bean    配置文件名称ApplicationContext applicationContext =new ClassPathXmlApplicationContext("applicationContext.xml");//获取bean对象Video video1 =(Video) applicationContext.getBean("video");System.out.println(video1.getTitle());//调用钩子函数destroy操作((ClassPathXmlApplicationContext) applicationContext).registerShutdownHook();}
}

Spring:IOC容器Bean的生命周期的int和destro方法详解(4)相关推荐

  1. Spring IOC:bean的生命周期与@Autowire(1)

    全系列文章: <Spring IOC:bean的生命周期与@Autowire(1)> <Spring IOC:bean的生命周期与@Autowire(2)> <Sprin ...

  2. Spring IOC容器-Bean管理——基于XML方式

    Spring IOC容器-Bean管理--基于XML(续集) 1.IOC 操作 Bean 管理(FactoryBean) ​ 1).Spring 有两种类型 bean,一种普通 bean,另外一种工厂 ...

  3. (转)Spring管理的Bean的生命周期

    http://blog.csdn.net/yerenyuan_pku/article/details/52834011 bean的初始化时机 前面讲解了Spring容器管理的bean的作用域.接着我们 ...

  4. 阐述Spring框架中Bean的生命周期?

    ① Spring IoC容器找到关于Bean的定义并实例化该Bean. ② Spring IoC容器对Bean进行依赖注入. ③ 如果Bean实现了BeanNameAware接口,则将该Bean的id ...

  5. 【面试题】Spring框架中Bean的生命周期

    生命周期 1.实例化一个Bean--也就是我们常说的new一个对象: 2.按照Spring上下文对实例化的Bean进行配置--也就是IOC注入: 3.如果这个Bean已经实现了BeanNameAwar ...

  6. Spring框架中bean的生命周期

    ean在Spring容器中从创建到销毁经历了若干阶段,每一阶段都可以针对Spring如何管理bean进行个性化定制. 正如你所见,在bean准备就绪之前,bean工厂执行了若干启动步骤. 我们对上图进 ...

  7. 再见面试官:你能说说 Spring 框架中 Bean 的生命周期吗?

    首先简单说一下(以下为一个回答的参考模板) 1.实例化一个Bean--也就是我们常说的new: 2.按照Spring上下文对实例化的Bean进行配置--也就是IOC注入: 3.如果这个Bean已经实现 ...

  8. Spring中的Bean的生命周期

    1.Spring对bean进行实例化 2.Spring将和bean的引用注入到bean对应属性中 3.如果bean实现了BeanNameAware接口,Spring将bean的ID的传递给setBea ...

  9. spring IOC容器 Bean 管理——基于注解方式

    IOC 操作 Bean 管理(基于注解方式) 1.什么是注解 ​ (1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值, 属性名称=属性值-) ​ (2)使用注解,注解作用在类上面,方法上面, ...

最新文章

  1. # Ubuntu 配置自带vnc桌面共享
  2. 【Unix 网络编程】TCP状态转换图详解
  3. HTML页面显示缩略所有空格为一格的方法
  4. 10行代码AC——1016 部分A+B (15分)
  5. cv岗工作做什么_职场速递:我应该做什么工作?
  6. 配置多台机器SSH相互通信信任
  7. [20个项目学会BBC micro:bit编程] 12-蜂鸣器控制
  8. 百度硬盘搜索结盟IBM,Lotus邮件也能搜索
  9. 计算机桌面常用图标,电脑常用软件图标 常用的电脑软件图标
  10. 计算机光盘无法格式化,c盘无法格式化怎么办 c盘无法格式化的解决方法
  11. UTC时间转化为北京时间
  12. 三维激光扫描后处理软件_地面三维激光扫描仪应用之一|云尚智造
  13. 用python画气球程序_动态编程气球最大得分(Python实现),规划,打,的,分数,python...
  14. PyTorch中通过torch.save保存模型和torch.load加载模型介绍
  15. zillow房价预测比赛_如何看待 Kaggle 发布的 Zillow 房价预测比赛?
  16. iOS开发——openssl生成CSR (pkcs10) 请求证书
  17. 如何在iPhone之间共享您的Wi-Fi密码?
  18. 总结篇:消息中间件MQ的学习境界和路线
  19. C语言int 类型的表示范围 sizeof()函数
  20. android LeanCloud SDK部署

热门文章

  1. Python3处理手写笔记
  2. 手机计算机的游戏怎么玩,电脑玩手机游戏,教您电脑怎么玩手机游戏
  3. linux建立虚拟硬盘,创建linux虚拟硬盘.doc
  4. OpenCL错误码和说明
  5. python之路——初识面向对象
  6. Class -- 09 -- Field类常用方法解析
  7. 免费在线阅读 计算机,计算机考试2008.doc
  8. 《科学大家》|让你失望了 地震云并不存在!
  9. LIS的三种求解方法
  10. CONDITIONS EVALUATION REPORT