package com.sf.aop.advisor; import org.springframework.aop.MethodMatcher; import java.lang.reflect.Method; // 在方法级别的拦截 // 使用接口 MethodMatcher // 在实现方法中 判断是否要拦截 public class EatMethodMatcher implements MethodMatcher { /** * 监控接口比如BaseService,没有重载方法,每一个方法名称都是唯一的, * 此时采用 static 检测方式,只根据方法名称来进行判断,如果有重载方法, * 可以使用下方的 matches() 方法 * 业务:只想对 Person 类中的 eat() 方法提供织入 * * @param method 接口中的某一个方法 * @param targetClass 接口中的实现类 * @return */ @Override public boolean matches(Method method, Class targetClass) { String methodName = method.getName(); if ("eat".equals(methodName)) { return true; } return false; } @Override public boolean isRuntime() { return false; } @Override public boolean matches(Method method, Class targetClass, Object... args) { return false; } }