基于AspectJ注解开发
在 Spring 中,尽管使用 XML 配置文件可以实现 AOP 开发,但是如果所有的相关配置都集中在配置文件中,势必会导致 XML 配置文件过于臃肿,从而给维护和升级带来一定的困难。
为此,AspectJ 框架为 AOP 开发提供了一套注解。AspectJ 允许使用注解定义切面、切入点和增强处理,Spring 框架可以根据这些注解生成 AOP 代理。
常用的注解:
@Aspect 用于定义一个切面。
@Pointcut 用于定义一个切入点。
@Before 用于定义前置通知
@AfterReturning 用于定义后置通知
@Around 用于定义环绕通知
@AfterThrowing 用于定义抛出通知
@After 用于定义最终final通知,不管是否异常,该通知都会执行。
基于注解开发需要启动注解
使用@Configuration和@EnableAspectJAutoProxy注解
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass = true) //启用AOP 解析AspectJ注解
public class SpringConfig {
}
注意:
本文只是用dao层测试,实际开发还是在service层使用AOP
- 在spring基础上添加AOP需要用到的依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<!--Spring-aop(必须)
包含在应用中使用Spring 的AOP 特性时所需的类和源码级元数据支持。-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.3.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjrt -->
<!-- aspectj的runtime包(必须) -->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.1</version>
</dependency>
<dependency>