springBean生命周期
实例化阶段
1.spring读取xml配置文件,容器就会调用doCreateBean方法进行实例化,底层是通过工厂+反射完成的创建
2.bean实例化后,进行bean对象属性填充
3.执行Aware接口的方法,spring会检查bean对象是否实现了Aware接口,通过Aware接口我们可以拿到spring为我们提供的一些资源,比如实现了BeanNameAware接口获取beanName,实现BeanFactoryAware接口可以获取工厂对象
.
初始化阶段
1.检查是否实现了BeanPostProcessor接口执行postProcessBeforeInitialization()对bean进行前置初始化
2.检查是否实现了InitializingBean接口如果实现了就调用afterPropertiesSet方法完成初始化 使用场景比如我们想在对象创建完之后调用其他bean对象的方法可以在afterPropertiesSet方法完成调用,
如果你是在构造方法里进行调用其他bean的对象或者在普通代码块调用都会出现空指针异常,这是因为你调用bean对象没有完成实例化,afterPropertiesSet方法是在所有bean对象完成实例化后进行执行的
3.检查是否实现了BeanPostProcessor后置处理接口执行ProcessAfterInitialization()方法,可以获取这个bean对象添加一些默认值的属性,甚至可以返回一个代理对象
.
销毁阶段
4.检查bean对象是否实现DisposbleBean接口调用destroy方法
以下生命周期的方法,打印结果可以观察执行顺序====================================
@Configuration
public class MyBean implements InitializingBean,BeanPostProcessor, BeanFactoryAware, BeanNameAware {@Beanpublic UserService userService(){return new UserService();}@Beanpublic OrderService orderService(){return new OrderService();}@Overridepublic void afterPropertiesSet() throws Exception {System.out.println("InitializingBean ");}@Overridepublic Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {System.out.println("postProcessBeforeInitialization ="+bean);return bean;}@Overridepublic Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {System.out.println("postProcessAfterInitialization ="+bean);return bean;}@Overridepublic void setBeanFactory(BeanFactory beanFactory) throws BeansException {System.out.println("BeanFactoryAware ="+beanFactory.hashCode());}@Overridepublic void setBeanName(String beanName) {System.out.println("BeanNameAware ="+ beanName);}
}

打印

BeanFactoryAware =963601816
BeanNameAware =myBean
BeanFactoryAware =963601816
InitializingBean
postProcessBeforeInitialization =com.yujie.config.service.UserService@2133814f
postProcessAfterInitialization =com.yujie.config.service.UserService@2133814f
postProcessBeforeInitialization =com.yujie.config.service.OrderService@4c15e7fd
postProcessAfterInitialization =com.yujie.config.service.OrderService@4c15e7fd

springBean的生命周期 面试好记无废话相关推荐

  1. 记一次李姐SpringBean的生命周期

    SpringIOC的加载过程 1.首先通过BeanDefinitionReader读取配置文件,得到完成的Bean定义对象BeanDefinition对象,此时只是得到Bean的相关定义信息,还没有开 ...

  2. 一步步实现:springbean的生命周期测试代码

    1. 创建实体SpringBean public class SpringBean {private String username;public String getUsername() {retu ...

  3. 【Spring注解系列10】SpringBean的生命周期

    1.SpringBean生命周期定义 指bean创建---初始化----销毁的过程. 构造(对象创建): 单实例:在容器启动的时候创建对象 多实例:在每次获取的时候创建对象 初始化和销毁方式: 指定初 ...

  4. Spring-bean的生命周期

    1.生命周期:从对象创建到对象销毁的过程 2.bean的生命周期 (1)通过构造器创建bean实例(无参构造) (2)为bean的属性设置值和对其他bean的引用(调用set方法) (3)调用bean ...

  5. spring bean的生命周期面试回答及代码演示

    前言: 在面试中经常会被问到谈谈你对spring bean生命周期的理解,如果单方面的在网站看写的博客很难理解的,最好自己写代码体会他的实现流程. 1.先了解这几个类的意思 BeanNameAware ...

  6. spring----Bean的生命周期和循环依赖

    循环依赖: A类引用了B,B类引用了A,像这种循环着依赖就是循环依赖: 对于这种配置不会报错 <bean id="instanceA" class="com.zy. ...

  7. springbean的生命周期_spring bean生命周期(涵盖spring常用接口的载入)

    spring bean生命周期流程图: ​ ​​​ 其中包含了很多常用的接口,可以参考spring 常用接口: 下面写个例子证明下: 1.实现InitializingBean以及各个Aware接口 p ...

  8. Activity生命周期(略记)

    protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume( ...

  9. SpringBean生命周期的理解

    文章目录 前言 一.BeanFactory 和 ApplicationContext 1.1什么是Spring bean? 1.2BeanFactory 1.3ApplicationContext 1 ...

最新文章

  1. 五、Go语言复合数据类型(下)
  2. strlen 与 sizeof
  3. React性能优化 PureComponent
  4. 内部收益率irr_介绍一个神器,内部收益率IRR
  5. oracle 安装时的日志文件,oracle10g安装的日志文件 Oracle10g怎么查看操作日志
  6. android中Adapter适配器的讲解
  7. 初学者python笔记(hashlib加密、logging日志模块、configparser配置文件)
  8. JavaScript格式化金额及格式化输出
  9. 【看这一篇就够了】如何删除gitHub仓库中的文件
  10. 一个企业老板给毕业生的十七句话
  11. Atitit 学习记忆理论 教育理论 教学培训 目录 1. 视觉优先理论 1 2. 心理学的“认知负荷理论 2 2.1. 双重编码理论 2 2.2. 艺术化 原理动画 3 2.3. 艾宾浩斯遗忘曲
  12. 【海康威视】WPF客户端二次开发:【1】监控视频画面预览(SDK初始化、设备登录、监控画面预览)
  13. 超好用的私人珍藏网站,送给你了!
  14. 四千个厂商默认账号密码 默认登录凭证
  15. 其实我(微笑哥)是个正经男人!
  16. 表扩展字段2种实施方案研究
  17. 网易云音乐热门作品名字和链接抓取(pyquery篇)
  18. 论文解读:Deep-4MCW2V:基于序列的预测指标,以鉴定大肠杆菌中的N4-甲基环胞嘧啶位点
  19. Sony索尼HLG灰片电影调色LUT预设合集 HLG CINEMATIC LUTPACK BUNDLE
  20. C语言实现任意函数求不定积分

热门文章

  1. ffmpeg av_read_frame返回AVERROR_EOF
  2. PADS layout 脚本一键生成BOM表格-操作步骤
  3. 【wxWidgets 教程】安装、配置、HelloWorld篇(一)
  4. linux下那些服务可以禁用掉
  5. 汇编语言DW、DB和DD的区别
  6. [附源码]计算机毕业设计springboot新能源汽车租赁
  7. 黑莓WP版BBM即时通信应用突然下架Windows Store
  8. 与50位网站主编面对面—BiaNews网编训练营系列讲座
  9. 使用Adobe Acrobat DC对.jpg和.png格式图片转换为.eps图片格式举例
  10. 矩阵计算 | 常用矩阵求导公式速查