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

Spring加载流程,Springboot自动装配原理

  Spring加载流程是,先扫描所有注解或者配置文件,然后通过反射加载到BeanDefinition类里,然后每一个Bean信息都是一个BeanDefinition,这里面包含了bean的id,class全类名,name,单例,然后每一个bean都会产生对应的BeanDefinition,然后这些beandefinition是通过beandefinitionmap进行管理的,他们都存在annotationapplicationcontext,然后获取bean实际上是beanfactory获取的,只不过applicationcontext可以将多个配置文件的信息同时加载,而且它还具有懒加载的功能,如果光是beanfactory还得手动注册bean的信息。之后通过构造方法或者字段注入等,将bean信息注入到指定字段上,让如果实现了aware接口,比如BeanNameaware可以获取bean的名字,BeanFactoryAware、ApplicationContextAware。接下来就是通过BeanPostProccser下的beforeXXX进行初始化前的一些方法然后进行initBeanFactory下的afterpropertiSet放法实现初始化功能,可以自定义一些方法,初始化完成之后进行BeanPostProccser的afterXX方法,此时AOP就在这里进行的,因为AOP增强的肯定是可以用的bean里的各种方法,不然AOP在之前出现,就没有意义了因为bean都没被创建,代理对象都无法生成。之后使用然后进行销毁disableFactory的destroy方法销毁。

自动装配原理就是先通过@SpringBootApplication中的enableAutoConfigutation注解引入的Import注解,在spring加载IOC容器的时候,会获取里面的的一个组件,他会读取META-INF/spring.factories的文件信息,然后过滤出所有AutoCofigutationClass类型(因为这个文件里包括了很多类),然后通过@ConditionOnXXX过滤出无效的自动配置类 


http://www.mrgr.cn/news/75255.html

相关文章:

  • 在ubuntu上安装ubuntu22.04并ros2 humble版本的docker容器记录
  • 深入探索:Scrapy深度爬取策略与实践
  • 论文1—《基于卷积神经网络的手术机器人控制系统设计》文献阅读分析报告
  • 微搭低代码入门03函数
  • java项目-jenkins任务的创建和执行
  • WebGIS四大地图框架:Leaflet、OpenLayers、Mapbox、Cesium
  • android开发
  • exo - 使用日常设备运行AI集群
  • 2024年09月CCF-GESP编程能力等级认证Python编程一级真题解析
  • 微信小程序-prettier 格式化
  • Diffusion Policy——斯坦福机器人UMI所用的扩散策略:从原理到其编码实现(含Diff-Control、ControlNet详解)
  • leetcode hot100【LeetCode 105.从前序与中序遍历序列构造二叉树】java实现
  • Web性能优化:从基础到高级
  • 二叉树的遍历(手动)
  • 一文了解Android的核心系统服务
  • 不宽的宽字符
  • 面试中如何回答“怎样实现 RPC 框架”的问题?
  • 高效的 JSON 处理库 json.cpp
  • ubuntu里面的gcc编译方法
  • 三维测量与建模笔记 - 特征提取与匹配 - 4.2 梯度算子、Canny边缘检测、霍夫变换直线检测
  • 使用SimpleDateFormat的踩坑指南
  • 如何让 ChatGPT 像人类一样书写:4个步骤让你的内容栩栩如生!
  • 探索Google Earth Engine:利用MODIS数据和R语言进行2000-2021年遥感生态指数(RSEI)的时空趋势分析
  • otter 自由门使用方法
  • OpenGL 进阶系列08 - 天空盒实现
  • python习题练习