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. 杨学海:跨境电商新通道-进口保税直邮模式解析
  2. CF1471 D - Strange Definition(思维,分类讨论,lcm,gcd的性质,数论)
  3. 网规:第1章计算机网络原理-1.6广域网与接入
  4. centos7+tomcat部署JavaWeb项目超详细步骤
  5. sqlite3 出错
  6. 三相锁相 c 语言 程序,轻松玩转DSP——基于TMS320F2833x(Word+PDF+ePub+PPT)
  7. assert.notDeepEqual()
  8. 拉普拉斯矩阵(Laplacian Matrix) 及半正定性证明
  9. android 执行Shell命令
  10. python中jieba库的作用_Python jieba库用法及实例解析
  11. 微信开发工具调试窗口怎样查看netWork
  12. 金三角图形c语言,升哥学堂 | 实战均线形态——“金三角”
  13. 数据结构(2)时间复杂度——渐进时间复杂度、渐进上界、渐进下界
  14. 市面上最适合跑步用的耳机有哪些、分享五款最优秀的跑步耳机
  15. 字节输入输出流,字符输入输出流
  16. Ratione aspernatur nam dolorem vitae quia.Fumer comme créer passer ailleurs jouer lumière.
  17. 为什么日本人不吃鲤鱼
  18. 利用Sobel算子,求梯度图像
  19. 拼音首字母缩写在线翻译源码
  20. Qt学习笔记——获取本机网络信息(IP, 子网掩码, 广播地址,主机名

热门文章

  1. 从绝地求生到新晋网红,看大逃杀游戏的生死存亡之道
  2. AV1源码分析(一)
  3. 基于KNN算法的图像识别
  4. 艾伟_转载:用C#打造quot;QQ对战平台挤房器quot;
  5. CTS测试框架 -- V1版本
  6. 台式电脑键盘按f1是计算机怎么办,按F1才能进系统怎么办 电脑开机按f1才能进入系统解决办法...
  7. Linux网络工程师资料
  8. matlab求双线性变换法,[Matlab]双线性变换法设计数字低通滤波器
  9. BlackBerry Live 2013最大亮点:BBM今夏将登陆Android和iOS平台在今晚举办的“BlackBerry Live 2013”发布会上,黑莓除了推出新款BB10手机Q5外, 黑莓
  10. Zabbix 6.0 图文安装部署讲解---LNMP环境