Spring AOP 提供了 5 种类型的通知,它们分别是 Before Advice(前置通知)、After Returning Advice(后置通知)、Interception Around Advice(周围通知)、Throws Advice(异常通知)和 Introduction Advice(引介通知)。下面分别进行介绍。
一、前置通知(前置增强)
前置通知顾名思意,该通知织入在方法调用之前。我们可以通过Spring 的MethodBeforeAdvice 接口实现。MethodBeforeAdvice 只提供方法before(),该方法无返回值,方法接受调用方法,方法参数和目标对象这3个参数。这里需要注意的是,虽然before()方法得到了调用方法的参数,这里值得注意的是方法参数可以进行更改!
创建一个工人接口类:
/**
*功能 工人接口类
*/
package com.mucfc.advice;
public interface Worker {
void getTool(String tool);
void digSomething(String type);
void initWork();
}
工人实现类:
/**
*功能 工人实现类
*/
package com.mucfc.advice;
import javax.management.RuntimeErrorException;
public class DigWorker implements Worker{
@Override
public void getTool(String tool) {
System.out.println("---------------调用方法--------------");
System.out.println("领取工具:"+tool);
// throw new RuntimeException("运行异常");
}
@Override
public void digSomething(String type) {
System.out.println("---------------调用方法--------------");
System.out.println("开始卖力挖取:"+type);
}
@Override
public void initWork() {
System.out.println("生成一个DigWorker实例");
}
}
3、创建前置增强的方法:
/**
*功能 前置增强方法
*/
package com.mucfc.advice;
import java.lang.reflect.Method;
import org.springframework.aop.MethodBeforeAdvice;
public class WearingBeforeAdvice implements MethodBeforeAdvice{
public void before(Method arg0, Object[] arg1, Object arg2)
throws Throwable {
String thing=(String)arg1[0];
System.out.println("--------------进行前置增强---------------");
System.out.println(