8.4.5 基于注解的”零配置”方式
Spring使用AspectJ注解
AspectJ允许使用注解定义切面、切入点和增强处理,而Spring框架则可识别并根据这些注解来生成AOP代理。 Spring只是使用了和AspectJ 5一样的注解,但并没有使用AspectJ的编译器或者织入器,底层依然使用的是Spring AOP,依然是在运行时动态生成AOP代理,并不依赖于AspectJ的编译器或者织入器
简单地说, Spring依然采用运行时生成动态代理的方式来增强目标对象,所以它不需要増加额外的编译,也不需要AspectJ的织入器攴持;而AspectJ采用编译时增强,所以AspectJ需要使用自己的编译器来编译Java文件,还需要织入器。
Sping中启用@AspectJ支持
在Spring配置文件中开启对@AspectJ切面的支持
为了启用Spring对@AspectJ切面配置的支持,并保证Spring容器中的目标Bean被一个或多个切面自动增强,必须在Spring配置文件中配置如下片段:
1 |
|
当然,如果希望完全启动Spring的”零配置”功能,则还需要采用如8.2节所示的方式进行配置。
自动增强
所谓自动增强,指的是Spring会判断一个或多个切面是否需要对指定Bean进行增强,并据此自动生成相应的代理,从而使得增强处理在合适的时候被调用
使用Bean后处理器启用@AspectJ支持
如果不打算使用Spring的XML Schema配置方式,则应该在Spring配置文件中增加如下片段来启用@AspectJ支持。
1 | <!-- 启用@AspectJ支持 --> |
上面配置文件中的AnnotationAwareAspectJAutoProxyCreator是一个Bean后处理器,该Bean后处理器将会为容器中符合条件的Bean生成AOP代理。
启用@AspectJ支持需要导入的jar包
为了在Spring应用中启动@AspectJ支持,还需要在应用的类加载路径下增加aspectjweaver.jar和aspectjrt.jar这两个JAR库,这两个jar包位于Aspect安装路径下的lib目录中。
除此之外,Spring AOP还需要依赖一个aopalliance.jar.
原文链接: 8.4.5 基于注解的 零配置 方式