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

2、手写模拟Spring底层原理

 

 

 

 

 

 

创建BeanDefinition bean定义 

 设置BeanDefinition 的类信息,作用域信息

 创建beanDefinitionMap

 

 

 

 scope为原型:

  scope为单例:

总结:

扫描@ComponentScan注解上的包扫描路径,将@Component注解修饰的类,生成BeanDefination,放入beanDefinitionMap,根据scope属性决定对象的创建时机,如果是单例,则创建出来放到singletonObjectsMap,如果是原型则不创建;在获取bean时,单例则直接从singletonObjectsMap获取,原型则再次创建bean。

@Component优化

 Autowired注解 做依赖注入

初始化前  执行@PostContruct修饰的方法

模拟InitializingBean初始化操作

BeanPostProcessor 初始化前 初始化后

遍历执行:

 

 

 BeanPostProcessor  实现AOP

 先执行切面逻辑,再执行普通的方法test()。

 通过BeanPostProcessor  实现其他扩展功能。

如自定义@value。

Aware回调接口 spring中实现对应的接口就会进行回调

源码中的aware

http://www.lryc.cn/news/133218.html

相关文章:

  • 6篇 ICML 2023 杰出论文解析,涉及无学习率、LLM水印、域泛化等方向
  • linux第三阶段--第三方软件(一)MySQL的概述和二进制安装(官网版)
  • AD域控制器将辅域控制器角色提升为主域控制器
  • Docker案例分析:创建并运行一个Redis容器
  • 银河麒麟服务器v10 sp1 .Net6.0 上传文件错误 access to the path is denied
  • 钝感力:项目经理的隐形盾牌
  • 成集云 | 乐享问题邀请同步企微提醒 | 解决方案
  • 【TypeScript】基础类型
  • c++控制台双人格斗小游戏(测试版)
  • flink jira 提交开源bug
  • 华为杯”研究生数学建模竞赛2018年-【华为杯】D题:基于卫星高度计海面高度异常资料 获取潮汐调和常数方法及应用(续)
  • HTTP连接管理
  • 漏洞指北-VulFocus靶场专栏-初级02
  • 无论是小说、公文还是新闻稿,爱校对都是你的最佳选择
  • MySQL数据表的损坏及容灾解决方案
  • 【仿写tomcat】二、扫描java文件,获取带有@WebServlet注解的类
  • pytorch2.0.1 安装部署(cpu+gpu) linux+windows
  • Java数据结构学习和源码阅读(线性数据结构)
  • 华为网络篇 多区域OSPF-32
  • 【HCIP】03.VLAN高级技术
  • WebSocket服务端数据推送及心跳机制(Spring Boot + VUE)
  • 根据Dockerfile创建容器案例讲解
  • CF 1328 D Carousel(环构造)
  • 什么是SaaS、PaaS、aPaaS、iPaaS、IaaS,一文讲透
  • Mac nvm 切换为淘宝镜像
  • aardio简单网站css或js下载练习
  • “维度削减+逻辑回归”:如何使用PCA大幅提升乳腺癌的预测成功率?
  • Python程序设计基础:random库的使用
  • webpack 打包全流程
  • 如何准备软件开发项目成本估算?