10. Spring基于注解的AOP开发
10.1快速入门
开发步骤:
1)创建目标接口和目标类(内部有切点);
2)创建切面类(内部有增强方法);
3)将目标类和切面类的对象创建权交给Spring;//@Component,@Aspect
4)在切面类中使用注解配置织入关系;
5)在配置文件中开启组件扫描(<context:component-scan base-package="…" />和AOP的自动代理(<aop:aspectj-autoproxy />)。
6)测试。
10.2 注解配置AOP详解
1.注解通知的类型
通知的配置方法:@通知注解(“切点表达式”)
名称 | 注解 | 说明 |
---|---|---|
前置通知 | @Before | 用于配置前置通知,指定增强的方法在切入点方法之前执行 |
后置通知 | @AfterReturning | 用于配置后置通知,指定增强方法在切入点之后执行 |
环绕通知 | @Around | 用于配置环绕通知,指定增强方法在切入点方法之前和之后都执行 |
异常抛出通知 | @AfterThrowing | 用于配置异常抛出通知,指定增强的方法在出现异常时执行 |
最终通知 | @After | 用于配置最终通知,无论增强方法执行是否有异常都会执行 |
2.切点表达式的抽取
同xml配置aop一样,可以将切点表达式进行抽取。抽取的方法是在切面类内定义方法,在该方法上使用@Pointcut注解定义切点表达式,然后在增强注解中进行引用
@Component("myAspect")
@Aspect
public class MyAspect {
@通知注解("MyAspect.myPoint()")
public void 通知方法() {
......
}
//以注解的形式抽取切点表达式
@Pointcut("execution(切点表达式)")
public void myPoint(){}
}