Spring中Bean生命周期过程:


1.Spring对Bean进行实例化(相当于程序中的new Xx())

2.Spring将值和Bean的引用注入进Bean对应的属性中

3.如果Bean实现了BeanNameAware接口,Spring将Bean的ID传递给setBeanName()方法
(实现BeanNameAware清主要是为了通过Bean的引用来获得Bean的ID,一般业务中是很少有用到Bean的ID的

4.如果Bean实现了BeanFactoryAware接口,Spring将调用setBeanDactory(BeanFactory bf)方法并把BeanFactory容器实例作为参数传入。
(实现BeanFactoryAware 主要目的是为了获取Spring容器,如Bean通过Spring容器发布事件等)

5.如果Bean实现了ApplicationContextAwaer接口,Spring容器将调用setApplicationContext(ApplicationContext ctx)方法,把y应用上下文作为参数传入.
(作用与BeanFactory类似都是为了获取Spring容器,不同的是Spring容器在调用setApplicationContext方法时会把它自己作为setApplicationContext 的参数传入,而Spring容器在调用setBeanDactory前需要程序员自己指定(注入)setBeanDactory里的参数BeanFactory )

6.如果Bean实现了BeanPostProcess接口,Spring将调用它们的postProcessBeforeInitialization(预初始化)方法
(作用是在Bean实例创建成功后对进行增强处理,如对Bean进行修改,增加某个功能)

7.如果Bean实现了InitializingBean接口,Spring将调用它们的afterPropertiesSet方法,作用与在配置文件中对Bean使用init-method声明初始化的作用一样,都是在Bean的全部属性设置成功后执行的初始化方法。

8.如果Bean实现了BeanPostProcess接口,Spring将调用它们的postProcessAfterInitialization(后初始化)方法
(作用与6的一样,只不过6是在Bean初始化前执行的,而这个是在Bean初始化后执行的,时机不同 )

9.经过以上的工作后,Bean将一直驻留在应用上下文中给应用使用,直到应用上下文被销毁

10.如果Bean实现了DispostbleBean接口,Spring将调用它的destory方法,作用与在配置文件中对Bean使用destory-method属性的作用一样,都是在Bean实例销毁前执行的方法。

Spring(https://www.zhihu.com/question/38597960)相关推荐

  1. Apache万网SSl证书安装不成功的一个注意事项(https安全链接,基于phpstudy)

    最近,微信小程序挺火,要做小程序网站域名必须要有ssl证书,形成https://的安全链接,我于是从万网上下载了一个免费的ssl证书,按照万网提供的安装方式怎么也安装不好,最后我这个Apache小白费 ...

  2. 一个知乎提问引发的(思考)[https://www.zhihu.com/question/263431508/answer/574084280]

    表示很喜欢这个问题,深有同感!这个问题也让我这种杂家谈谈想法吧,看题主应该是骨骼精奇的奇才,我假想读者是"小学生",所以,觉得我啰嗦的大大,忍忍吧,欢迎讨论. 先说回答,再说废话. ...

  3. C++通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃? https://www.zhihu.com/question/30838092/answer/49623765

    https://www.zhihu.com/question/30838092/answer/49623765 C++通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃? 代码如下 ...

  4. https://www.zhihu.com/question/41564604

    flask 与django区别 https://www.zhihu.com/question/41564604

  5. https://www.zhihu.com/question/21030556

    2019独角兽企业重金招聘Python工程师标准>>> cdsa 转载于:https://my.oschina.net/goudingcheng/blog/898403

  6. 如何评价小米发布的 UWB「一指连」技术,手机一指就能操控是如何实现的? https://www.zhihu.com/question/425238925

    如何评价小米发布的 UWB「一指连」技术,手机一指就能操控是如何实现的?

  7. html图片上传布局,上传图片(压缩图片再上传),布局参考以前的文章(https://www.jianshu.com/p/d379ab1b3eec)...

    引入一个js: 百度网盘链接:https://pan.baidu.com/s/1KO9gH4r6bP-foYVAQn5AxQ 提取码:mgcm 复制这段内容后打开百度网盘手机App,操作更方便哦 ht ...

  8. 微信小程序原生集成vant weapp注意点 (https://youzan.github.io/vant-weapp/#/intro)

    1.点击工具中 构建npm 才会在项目中自动生成 miniprogram_npm文件夹   2.关于 Dialog 弹出框的使用注意事项 前面的 ../../../具体看你自己项目的层级会有提示的

  9. PEP8(https://www.python.org/dev/peps)代码规范

    建议代码行长度不要超过79个字符: 给形参指定默认值时,等号两边不要有空格.函数调用时同样也遵循此规定:

最新文章

  1. 遗传:细菌、真菌和动植物的泛基因组研究进展
  2. 学好机器学习必备这12条经验 !(附资料)
  3. xmlrcp学习 - python中使用xmlrpc
  4. 0-1背包-分支限界
  5. Oracle三级联动单表地址数据
  6. 日志、下载、投影、连接查询
  7. 集群监控系统的设计方案
  8. [SDOI2012]吊灯(结论)
  9. java虚拟机规范阅读(三)异常
  10. MS3D model 的 Frame count
  11. Java线程状态的改变
  12. 智能指针auto_ptr源码
  13. android+mid播放器,手机midi播放器下载
  14. java编程思想--final关键字
  15. rcnn fastrcnn fasterrcnn总结
  16. 19所高校进入A类!泰晤士计算机专业大学评级公布!
  17. java引入math包_JAVA math包
  18. VMware如何安装windows10教程
  19. vue解决打开新窗口被拦截的的实战方法
  20. react-native 报错Cannot add a child that doesn't have a YogaNode to a parent without a measur

热门文章

  1. 赵联松武汉大学计算机学院,武汉大学电气工程学院2018年优秀大学生暑期夏令.doc...
  2. 还说Facebook创始人扎克伯格开飞度?这回被打脸了
  3. 秦羽接引的鸿蒙第四人,星辰变:仙界最强的五人,秦羽第二,敖无虚垫底,小黑难进前三...
  4. python跳一跳脚本详解_跳一跳 python脚本 改进版
  5. BIND的安装与配置
  6. yara 源码学习(二) 规则编译部分
  7. Python密码库Cryptography探究学习
  8. 漫谈QNX(架构/进程,线程,同步,进程间通信IPC)
  9. mybatis plus环境搭建及代码生成器
  10. 【DT】蒸脱机的结构和工作原理