当前位置: 首页 > 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

相关文章:

  • 一文通透OpenVLA及其源码剖析——基于Prismatic VLM(SigLIP、DinoV2、Llama 2)及离散化动作预测
  • WINFORM - DevExpress -> gridcontrol拖拽行记录排序
  • Python脚本自动发送电子邮件
  • 第六章:网页设计
  • 【cs.AI】25.1.11 arxiv更新速递
  • java开发
  • 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习题练习