Spring(https://www.zhihu.com/question/38597960)
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)相关推荐
- Apache万网SSl证书安装不成功的一个注意事项(https安全链接,基于phpstudy)
最近,微信小程序挺火,要做小程序网站域名必须要有ssl证书,形成https://的安全链接,我于是从万网上下载了一个免费的ssl证书,按照万网提供的安装方式怎么也安装不好,最后我这个Apache小白费 ...
- 一个知乎提问引发的(思考)[https://www.zhihu.com/question/263431508/answer/574084280]
表示很喜欢这个问题,深有同感!这个问题也让我这种杂家谈谈想法吧,看题主应该是骨骼精奇的奇才,我假想读者是"小学生",所以,觉得我啰嗦的大大,忍忍吧,欢迎讨论. 先说回答,再说废话. ...
- C++通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃? https://www.zhihu.com/question/30838092/answer/49623765
https://www.zhihu.com/question/30838092/answer/49623765 C++通过基类指针delete派生类数组,析构函数是虚函数,程序为什么会崩溃? 代码如下 ...
- https://www.zhihu.com/question/41564604
flask 与django区别 https://www.zhihu.com/question/41564604
- https://www.zhihu.com/question/21030556
2019独角兽企业重金招聘Python工程师标准>>> cdsa 转载于:https://my.oschina.net/goudingcheng/blog/898403
- 如何评价小米发布的 UWB「一指连」技术,手机一指就能操控是如何实现的? https://www.zhihu.com/question/425238925
如何评价小米发布的 UWB「一指连」技术,手机一指就能操控是如何实现的?
- html图片上传布局,上传图片(压缩图片再上传),布局参考以前的文章(https://www.jianshu.com/p/d379ab1b3eec)...
引入一个js: 百度网盘链接:https://pan.baidu.com/s/1KO9gH4r6bP-foYVAQn5AxQ 提取码:mgcm 复制这段内容后打开百度网盘手机App,操作更方便哦 ht ...
- 微信小程序原生集成vant weapp注意点 (https://youzan.github.io/vant-weapp/#/intro)
1.点击工具中 构建npm 才会在项目中自动生成 miniprogram_npm文件夹 2.关于 Dialog 弹出框的使用注意事项 前面的 ../../../具体看你自己项目的层级会有提示的
- PEP8(https://www.python.org/dev/peps)代码规范
建议代码行长度不要超过79个字符: 给形参指定默认值时,等号两边不要有空格.函数调用时同样也遵循此规定:
最新文章
- 遗传:细菌、真菌和动植物的泛基因组研究进展
- 学好机器学习必备这12条经验 !(附资料)
- xmlrcp学习 - python中使用xmlrpc
- 0-1背包-分支限界
- Oracle三级联动单表地址数据
- 日志、下载、投影、连接查询
- 集群监控系统的设计方案
- [SDOI2012]吊灯(结论)
- java虚拟机规范阅读(三)异常
- MS3D model 的 Frame count
- Java线程状态的改变
- 智能指针auto_ptr源码
- android+mid播放器,手机midi播放器下载
- java编程思想--final关键字
- rcnn fastrcnn fasterrcnn总结
- 19所高校进入A类!泰晤士计算机专业大学评级公布!
- java引入math包_JAVA math包
- VMware如何安装windows10教程
- vue解决打开新窗口被拦截的的实战方法
- react-native 报错Cannot add a child that doesn't have a YogaNode to a parent without a measur
热门文章
- 赵联松武汉大学计算机学院,武汉大学电气工程学院2018年优秀大学生暑期夏令.doc...
- 还说Facebook创始人扎克伯格开飞度?这回被打脸了
- 秦羽接引的鸿蒙第四人,星辰变:仙界最强的五人,秦羽第二,敖无虚垫底,小黑难进前三...
- python跳一跳脚本详解_跳一跳 python脚本 改进版
- BIND的安装与配置
- yara 源码学习(二) 规则编译部分
- Python密码库Cryptography探究学习
- 漫谈QNX(架构/进程,线程,同步,进程间通信IPC)
- mybatis plus环境搭建及代码生成器
- 【DT】蒸脱机的结构和工作原理