Spring源码学习之Aop源码分析

Posted WK_BlogYard

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring源码学习之Aop源码分析相关的知识,希望对你有一定的参考价值。

在使用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源码分析的主要内容,如果未能解决你的问题,请参考以下文章

源码学习之AOPSpring AOP使用

spring源码学习之springMVC

Spring源码学习之:你不知道的spring注入方式

spring源码学习之设计模式单例模式

Spring源码分析之AOP

源码学习之Spring容器创建原理