当前位置: 首页 > news >正文

spring管理bean源码解析

1. 从启动类开始

public static void main(String[] args) {// Run the SpringApplication class with the Application class as the first argumentSpringApplication.run(Application.class, args);}

2. bean 实例化

// SpringAplication row=1294,1295
run()
// SpringAplication row=1035,1036
run()
// SpringAplication row=293,308
refreshContext(context);
//  SpringAplication row=404,408
refresh(context);
//  SpringAplication row=733,734
applicationContext.refresh();
//ConfigurationApplicationContext rw=201
refresh()
// AbstractApplicationContext row=545,583
finishBeanFactoryInitialization(beanFactory);
// AbstractApplicationContext row=890,918
beanFactory.preInstantiateSingletons();
// ConfigurationListableBeanFactory 160
preInstantiateSingletons();
// DefaultListableBeanFactory row=922,955
preInstantiateSingletons();
// AbstractBeanFactory row=207,208
getBean();
// AbstractBeanFactory row=248,374
goGetBean()
//AbstractBeanFactory row=2003
createBean()

3. bean 依赖注入

接上面

//AbstractBeanFactory row=2003
createBean()
//AbstractAutowireCapableBeanFactory row=503,542
createBean()
//AbstractAutowireCapableBeanFactory row=573,582
doCreateBean()
//AbstractAutowireCapableBeanFactory row=1180,1222
createBeanInstance()
//AbstractAutowireCapableBeanFactory row=1369,1372
autowireConstructor()
// ConstructorResolver row=127,181
autowireConstructor()
// ConstructorResolver row=300,311
instantiate()

4. 删除实例及其依赖实例

// DefaultSingletonBeanRegistry row=550
destroySingleton()
// DefaultSingletonBeanRegistry row=568
destroyBean()
// AbstractFactoryBean row=197
destroy()

优化中…

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [GICv3] 3. 物理中断处理(Physical Interrupt Handling)
  • 【 香橙派 AIpro评测】烧系统到运行并使用Jupyter Lab 界面体验 AI 应用样例(新手福音)
  • Excel中用VBA实现Outlook发送当前工作簿
  • Qt项目:基于Qt实现的网络聊天室---TCP服务器和token验证
  • 从数据仓库到数据湖(上):数据湖导论
  • 如何通过文件分发系统,实现能源电力企业文件的安全分发流转?
  • 展开说说:Android之View基础知识解析
  • 【Qt 基础】绘图
  • 如何判断服务器是否被攻击
  • 微信小程序如何实现登陆和注册功能?
  • ShardingSphere-JDBC —— 整合 mybatis-plus,调用批量方法执行更新操作扫所有分表问题
  • 【cocos creator】2.4.x实现简单3d功能,点击选中,旋转,材质修改,透明材质
  • c++课后作业
  • Oracle左连接过滤条件注意事项
  • 【Linux杂货铺】3.程序地址空间
  • 深入了解以太坊
  • egg(89)--egg之redis的发布和订阅
  • Electron入门介绍
  • JavaScript 基本功--面试宝典
  • JavaScript函数式编程(一)
  • Linux后台研发超实用命令总结
  • QQ浏览器x5内核的兼容性问题
  • ReactNativeweexDeviceOne对比
  • Ruby 2.x 源代码分析:扩展 概述
  • uni-app项目数字滚动
  • Unix命令
  • XML已死 ?
  • yii2中session跨域名的问题
  • 产品三维模型在线预览
  • 欢迎参加第二届中国游戏开发者大会
  • 聚类分析——Kmeans
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • ​ssh免密码登录设置及问题总结
  • ​探讨元宇宙和VR虚拟现实之间的区别​
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • # 职场生活之道:善于团结
  • #《AI中文版》V3 第 1 章 概述
  • #VERDI# 关于如何查看FSM状态机的方法
  • (2)MFC+openGL单文档框架glFrame
  • (20050108)又读《平凡的世界》
  • (Java)【深基9.例1】选举学生会
  • (js)循环条件满足时终止循环
  • (WSI分类)WSI分类文献小综述 2024
  • (补充):java各种进制、原码、反码、补码和文本、图像、音频在计算机中的存储方式
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (算法)前K大的和
  • (五)Python 垃圾回收机制
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转) Android中ViewStub组件使用
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • .net mvc 获取url中controller和action
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调