死磕Spring源码系列
文章平均质量分 93
Spring源码系列
后端开发萌新
本人喜欢研究安全技术、系统设计、架构、源码,如果你也喜欢,点个关注,一起学习一起成长
展开
-
Spring是怎样处理循环依赖的?
看这篇文章之前,建议先看看SpringBean生命周期这篇文章,如果对生命周期已经有了了解,那么可以跳过,直接看这篇文章简单理解就是A,B 两个bean相互依赖,A依赖B,B依赖AA->B、B->A大概就是这样看完源码之后,相信大家都有了一些了解,如果看完还是不太明白也没关系,自己跟着debug一遍然后做总结,加深印象,接下来我们对以上做一下总结吧。如果被问到Spring是如何解决循环依赖的?原创 2024-01-23 23:51:01 · 1183 阅读 · 1 评论 -
SpringBean生命周期是怎样的?
/从这里进入@Overridetry {...//实例化所有剩余的(非lazy-init 懒加载)单例,看到这个方法...finally {@Override//真正获取bean的方法方法覆盖(lookup-method or replaced-method)自定义代理**重点:**真正创建bean的方法(也是真正的Bean声明周期),doCreateBean@Override。原创 2024-01-21 23:58:53 · 1105 阅读 · 0 评论 -
SpringBean生命周期之初始化篇
调用Aware方法初始化之前回调BeanPostProcessor初始化Bean初始化之后回调BeanPostProcessor(代理对象也是在此生成)//校验安全管理器,一般没有= null) {else {//如果当前bean实现了BeanNameAware、BeanClassLoaderAware、BeanFactoryAware这三个Aware接口中的一个或多个,那么会在此方法里调用设置值//包装bean。原创 2024-01-20 16:27:06 · 488 阅读 · 0 评论 -
SpringBean生命周期之属性注入篇
内容比较干,要有点耐心哈~如果bean实例为null,那么跳过填充属性阶段在属性注入之前回调instantiationAware里的各种后置处理器根据byName、byType查找属性值@Resource、@Autowired注解注入进行set、byType、byName的属性注入(注意:最后这里才是真正的注入,前面只是查找属性值)/*** 属性填充* param beanName bean名称* param mbd bean定义* param bw bean包装器*/原创 2024-01-19 23:55:20 · 1321 阅读 · 0 评论 -
SpringBean生命周期之实例化篇
使用反射加载class推断需要实例化bean的构造器判断是否使用构造器注入如果使用,那么进行构造器注入完成后即返回结果不使用构造器注入则跳过执行第三点使用无参构造器实例化对象// 确保bean类在此时实际上已被解析,使用反射加载ClassClass原创 2024-01-17 08:00:00 · 956 阅读 · 0 评论 -
Spring是如何解析XML并组装BeanDefinition存入BeanDefinitionMap的?
Overridetry {//主要看这个,加载Bean定义,这个方法也是一个抽象方法,主要关注实现类AbstractXmlApplicationContext下面步入正题loadBeanDefinitions(DefaultListableBeanFactory beanFactory)这个方法大概做了哪些事?创建一个新的xml bean定义阅读器,设置默认资源加载器与环境使用当前上下文的配置重新给bean定义阅读器设置资源加载器与环境。原创 2023-12-27 17:15:47 · 1393 阅读 · 1 评论