编程式的Pointcut
除了可以通过注解和Xml配置定义Pointcut之外,其实我们还可以通过程序来定义Pointcut
。Spring Aop的切入点(Pointcut)对应于它的一个Pointcut
接口,全称是org.springframework.aop.Pointcut
。该接口的定义如下:
public interface Pointcut {
ClassFilter getClassFilter();
MethodMatcher getMethodMatcher();
Pointcut TRUE = TruePointcut.INSTANCE;
}
该接口一共定义了两个核心方法,一个用于获取该Pointcut对应的过滤Class的ClassFilter对象,一个用于获取过滤Method的MethodMatcher对象。
ClassFilter接口的定义如下:
public interface ClassFilter {
boolean matches(Class<?> clazz);
ClassFilter TRUE = TrueClassFilter.INSTANCE;
}
该接口只定义了一个matches方法,用于判断指定的Class对象是否匹配当前的过滤规则。
MethodMatcher接口定义如下:
public interface MethodMatcher {
boolean matches(Method method, Class<?> targetClass);
boolean isRunt