SpringAOP注解配置
SpringAop注解配置框架部署
1、创建maven工程
2、添加Spring依赖
-
context
-
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.12.RELEASE</version> </dependency>
-
aspects
-
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.12.RELEASE</version> </dependency>
3、SpringAOP配置文件
<?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:component-scan base-package="com.ccl"/>
<!-- 基于注解配置的aop代理-->
<aop:aspectj-autoproxy>
</aop:aspectj-autoproxy>
</beans>
AOP注解配置案例
@Component
@Aspect
public class Transction {
//定义切入点
@Pointcut("execution(* com.ccl.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 p ) throws Throwable {
long tim1 = System.currentTimeMillis();
Object v = p.proceed();
long tim2 = System.currentTimeMillis();
System.out.println("time: " + (tim2 - tim1));
return v;
}
}
注意:注解使用虽然方便,但是智能在源码上添加注解,因此我们的自定义注解配置;但如果使用到第三方提供的类则需要通过xml配置形式完成配置