委托类和接口
委托类是一个简单的算术计算器,对于 Spring AOP 技术而言,接口不是必须的。
public interface MathCalculator {
public int add(int num1, int num2);
public int minus(int num1, int num2);
public int mul(int num1, int num2);
public int div(int num1, int num2);
}
@Service
public class MyMathCalculator implements MathCalculator{
//@Override
public int add(int num1, int num2) {
return num1 + num2;
}
//@Override
public int minus(int num1, int num2) {
return num1 - num2;
}
//@Override
public int mul(int num1, int num2) {
return num1 * num2;
}
//@Override
public int div(int num1, int num2) {
return num1 / num2;
}
}
AOP 流程
-
将目标类和切面类(封装了通知方法)加入到 IOC 容器中。
-
告诉 Spring 哪个是切面类:使用 @Aspect 注解 。
-
告诉 Spring,切面类里面的每一个方法,都是何时何地运行:五种通知注解。
@Before 在目标方法执行之前 前置通知
@After 在目标方法执行之后 后置通知
@AfterReturning 在目标方法正常返回之后 返回通知
@AfterThrowing 在目标方法抛出异常之后 异常通知
@Return 环绕 环绕通知try {
@Before
method.invoke(obj, args)
@AfterReturning
} catch(e) {
@AfterThrowing
} finally {
@After
} -
开启基于注解的 AOP 功能, 引入 AOP 名称空间 ÿ