文章目录
1. 框架部署
1.1 添加依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.13.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.2.13.RELEASE</version>
</dependency>
1.2 自定义模板
自定义一个名为 spring-aop-annotation
的 xml
文件模板,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.mr"></context:component-scan>
<!-- 基于注解配置的aop代理 -->
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
</beans>
1.3 创建配置文件
使用 spring-aop-annotation
模板,生成配置文件 applicationContext.xml
。
2. 常用注释
2.1 @Aspect
类注释,用来定义一个切面类。
2.2 Pointcut
方法注释,用来定义一个带通知的切入点。
2.3 Before
、After
和 Around
定义在切点的前面、后面、环绕方式进行执行的方法注释。
3. 注释示例
@Component
@Aspect
public class TransactionManager {
@Pointcut("execution(* com.mr.dao.*.*(..))")
public void pc1(){}
@Before("pc1()")
public void begin(){
System.out.println("~~~~开启事务");
}
@After("pc1()")
public void commit(){
System.out.println("~~~~提交事务");
}
@Around("pc1()")
public Object printExecuteTime(ProceedingJoinPoint point) throws Throwable {
long time1 = System.currentTimeMillis();
Object v = point.proceed();
long time2 = System.currentTimeMillis();
System.out.println("----time:"+(time2-time1));
return v;
}
}