![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Spring注解版源码分析
文章平均质量分 93
小小都红帅
这个作者很懒,什么都没留下…
展开
-
Spring注解版执行流程 ConfigurationClassPostProcessor
代码往下执行。执行ConfigurationClassPostProcessor#postProcessBeanFactory方法。获取id,在之前执行postProcessBeanDefinitionRegistry方法时是往registriesPostProcessed添加标识,这里往factoriesPostProcessed添加标识。原创 2023-03-28 19:52:11 · 127 阅读 · 0 评论 -
Spring注解版执行流程 ConfigurationClassPostProcessor
将 @Bean注解方法元数据取出来分析,分析有没有别名、有没有跟 xml 配置冲突,封装成一个configurationClassBeanDefinition,然后设置工厂方法名,获取 bean 注解的属性,设置初始化方法,销毁方法,是否自动装配,是否需要代理等,最后将 BD 信息加入到 BeanDefinitionMap、BeanDefinitionNames 集合中。验证完之后继续往后看。设置为 true,那么直接调用方法获取 bean,不会创建新的 bean,而是会走 bean 的生命周期的行为。转载 2023-03-28 16:31:41 · 121 阅读 · 0 评论 -
Spring注解版执行流程 ConfigurationClassPostProcessor
上一篇文章,我们讲到invokeBeanFactoryPostProcessors方法中执行后置处理器ConfigurationClassPostProcessor的postProcessBeanDefinitionRegistry方法。这篇文章我们一探究竟。这个方法中传入了一个bean定义信息注册对象,结合上下文代码可以看出实际上就是我们工厂对象。ConfigurationClassPostProcessor类里面的东西非常复杂。不是一篇文章可以讲清楚的。这篇文章并不是我写的,我只是个搬运工。转载 2023-03-26 17:00:26 · 146 阅读 · 0 评论 -
Spring注解版执行流程 refresh
在这里,并没有实现这个方法。这个方法是什么意思呢。如果我们需要对bean工厂在进行增强操作,修改bean工厂属性什么的。可以实现一个bean工厂的后置处理器,到时候就会执行后置处理器对bean工厂进行增强。但是我们的并没有实现这个方法。所以我们这里也不能对bean工厂进行处理。原创 2023-03-25 18:53:29 · 84 阅读 · 0 评论 -
Spring注解版执行流程 refresh
之前的文章已经将刷新前的前置操作说完了,进入refresh方法,refresh方法是在AbstractApplicationContext容器中定义的。再说一次的继承关系继承自GenericApplicationContext。GenericApplicationContext继承自AbstractApplicationContext。第一步就是使用重锁synchronized保证同一时间只能有一个线程执行此方法。原创 2023-03-25 13:07:25 · 78 阅读 · 0 评论 -
Spring源码-注解版
determineBeanNameFromAnnotation里面的代码逻辑就是获取到配置类上的所有注解,循环遍历判断是否是Component注解并且value值不为空。我们直接看第二行代码。使用我们之前创建的bean定义信息读取器去读取我们的主配置类。前面5个是我们在创建AnnotatedBeanDefinitionReader对象的时候添加进去的,后面一个是我们的主启动类。进入这个方法,除了beanClass是主配置类,其他参数都是null。这个时候,主配置类的信息就有了,后续拿主配置类信息进行操作。原创 2023-03-24 16:38:07 · 152 阅读 · 0 评论 -
Spring源码-注解版
作为小白,学习Spring框架用了很久很久,而且还处于只会用的阶段。刚步入公司实习,深刻觉得框架源码的掌握非常重要。公司项目基于源码做了很多拓展,但是我连原生框架都没看明白,深感自己菜的离谱。Csdn上讲Spring源码的博客很混乱,找不到讲的很清晰的。所以今天斗胆尝试写一篇从头到尾的文章。我深知文章中有很多错误、不详细、讲的不好的地方,欢迎各位指错、私信讨论、写在评论区也可。原创 2023-03-24 15:10:57 · 350 阅读 · 0 评论