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