码迷,mamicode.com
首页 > 编程语言 > 详细

Spring源码学习之Aop源码分析

时间:2020-04-05 23:57:08      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:处理器   tin   runtime   exp   注解   attribute   efault   tor   false   

在使用Aop功能时要添加注解@EnableAspectJAutoProxy,所以这个注解就是Aop的入口了。这个注解的作用就是在Spring的后置处理器中添加一个处理器来处理springBean,使之成为一个代理对象。

1 @Target({ElementType.TYPE})
2 @Retention(RetentionPolicy.RUNTIME)
3 @Documented
4 @Import({AspectJAutoProxyRegistrar.class})
5 public @interface EnableAspectJAutoProxy {
6     boolean proxyTargetClass() default false;
7 
8     boolean exposeProxy() default false;
9 }

通过@Import注解进入AspectJAutoProxyRegistrar类中,这个类动态加载了spring的后置处理器

 1 class AspectJAutoProxyRegistrar implements ImportBeanDefinitionRegistrar {
 2     AspectJAutoProxyRegistrar() {
 3     }
 4 
 5     public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
 6         AopConfigUtils.registerAspectJAnnotationAutoProxyCreatorIfNecessary(registry);
 7         AnnotationAttributes enableAspectJAutoProxy = AnnotationConfigUtils.attributesFor(importingClassMetadata, EnableAspectJAutoProxy.class);
 8         if (enableAspectJAutoProxy != null) {
 9             if (enableAspectJAutoProxy.getBoolean("proxyTargetClass")) {
10                 AopConfigUtils.forceAutoProxyCreatorToUseClassProxying(registry);
11             }
12 
13             if (enableAspectJAutoProxy.getBoolean("exposeProxy")) {
14                 AopConfigUtils.forceAutoProxyCreatorToExposeProxy(registry);
15             }
16         }
17 
18     }
19 }

 

Spring源码学习之Aop源码分析

标签:处理器   tin   runtime   exp   注解   attribute   efault   tor   false   

原文地址:https://www.cnblogs.com/wk-missQ1/p/12639892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!