![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
注解原理分析
听风的小男孩
我是一个假的程序员
展开
-
@Async注解循环依赖的问题
@Async注解spring为什么解决不了循环依赖。@EnableAsync注解会在容器中生成一个AsyncAnnotationBeanPostProcessor后置处理器和AsyncAnnotationAdvisor切点,该处理器会寻找@Async注解。如果匹配到了会生成一个代理对象。if (isEligible(bean, beanName)) { ProxyFactory proxyFactory = prepareProxyFactory(bean, beanName); if (!.原创 2021-06-21 01:49:55 · 623 阅读 · 0 评论 -
Bean注解原理分析
前面文章:注解何时解析,提到了Bean注解何时被解析。public void processConfigBeanDefinitions(BeanDefinitionRegistry registry) { List<BeanDefinitionHolder> configCandidates = new ArrayList<BeanDefinitionHolder>(); ConfigurationClassParser parser = new Configuration原创 2020-12-25 15:04:30 · 575 阅读 · 0 评论 -
注解何时解析
AnnotationConfigApplicationContext为例public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) { //会调用无参构造函数 this(); register(annotatedClasses); refresh(); } public AnnotationConfigApplicationContext() { //此时会往容器中添加处.原创 2020-12-16 15:04:19 · 357 阅读 · 0 评论 -
Transaction注解原理
开启事务注解EnableTransactionManagement,该注解往容器中导入了导入TransactionManagementConfigurationSelector组件。该组件有个方法,在容器刷新的时候会被调用。(此处不讲解为什么会被调用,重点讲解Transaction注解)protected String[] selectImports(AdviceMode adviceMode) { switch (adviceMode) { case PROXY: return n.原创 2020-12-08 11:18:50 · 2291 阅读 · 6 评论 -
Aop原理分析
EnableAspectJAutoProxy注解开启Aop的时候会往容器中注册一个AnnotationAwareAspectJAutoProxyCreator 后置处理器,生成的代理对象都是由他完成。在实例化bean完成之后会进行初始化(这里的初始化是指给生成的bean进行属性赋值等操作)。(AbstractAutoProxyCreator是AnnotationAwareAspectJAutoProxyCreator的超类)如果有不懂或者错误的地方欢迎各位大佬留言,看看哪里有需要改动或者讲..原创 2020-12-05 18:00:30 · 168 阅读 · 2 评论 -
spring循环依赖
什么是循环依赖?A有B变量,B有A变量在代码看的更直观。@ComponentClass A{ @Autowired private B b;}@ComponentClass B{ @Autowired private A a;}spring如何解决这种循环依赖的?singletonObjects:一级缓存,存放着对象实例化和初始化都完成的对象。earlySingletonObjects:二级缓存,存放着从三级缓存取出的对象。singletonFactories.原创 2020-12-02 20:48:28 · 91 阅读 · 0 评论 -
@Autowired注解详细分析
@Autowired注解详细分析@Autowired是由AutowiredAnnotationBeanPostProcessor后置处理器处理的。@Autowired依赖注入是从下面开始的。(这里不讲解为啥从这里开始,如果这步有疑问,欢迎大家留言,可以专门出个博客讲解一下)AutowiredAnnotationBeanPostProcessor->postProcessPropertyValues()要想注入值,先要找到值。postProcessPropertyValues()-原创 2020-12-02 20:05:47 · 2160 阅读 · 0 评论 -
@Resource注解详细分析
@Resource注解详细分析@Resource是由CommonAnnotationBeanPostProcessor后置处理器处理的。(备注:如果这里有问题可以留言,下次再专门讲解)在bean依赖注入的时候,会给我们的变量进行赋值,但是赋值的前提要先找到我们的值。CommonAnnotationBeanPostProcessor的autowireResource()方法就在根据我们配置寻找。从下面代码可以大致分析得出如果@Resource没有指定name,但是我们就根据变量名称判原创 2020-12-02 11:21:43 · 4044 阅读 · 1 评论