快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

ag真人百家家乐是真的吗:Java编程—Spring AOP本质(6)



在前面四个例子中,只要实现一个Advice,然后调用ProxyFactory.addAdvice()措施为代理设定看护,不用设置切入点,从代理对上调用的措施就被看护到了。其缘故原由就在于履行addAdvice()措施时,ProxyFactory会将Advice工具委派给addAdvistor()措施,后台会自动创建一个DefaultPointcutAdvistor实例,并将Advice加入此中。而默认的DefaultPointcutAdvistor会将切入点设为所有的措施。

要是我们不想经由过程代理来履行某些措施,也便是说,在履行某些措施的时刻不通知,这时刻该若何实现呢?

Spring供给一系列接口来实现这个目标。最主要的接口如下:

implements org.springframework.aop.Pointcut

org.spag真人百家家乐是真的吗ringframework.aop.ClassFilter

org.springframework.aop.MethodMatcher

下面看看几个关键接口的定义:

1、切入点(Pointcut)

/**

* 切入点

*/

public interface Pointcut {

//切入点的一个单例

public static final ag真人百家家乐是真的吗Pointcut TRUE = TruePointcut.INSTANCE;

//类过滤器

public ClassFilter getClassFilter();

//措施过滤器

public MethodMatcher getMethodMatcher();

}

/**

* 类过滤器

*/

public interface ClassFilter {

//类过滤器单例

public static finag真人百家家乐是真的吗al ClassFilter TRUE = TrueClassFilter.INSTANCag真人百家家乐是真的吗E;

//类匹配措施

public boolean matches(Class class1);

}

/**

* 措施过滤器

*/

public interface MethodMatcher {

//措施过滤器单例

public ag真人百家家乐是真的吗static final MethodMatcher TRUE = TrueMethodMatcher.INSTANCE;

//静态措施匹配措施

public boolean matches(Method method, Class class1);

//判断静态照样动态匹配,返回true动态匹配,false静态匹配

public boolean isRuntime();

//工具(动态)匹配措施

public boolean matches(Method method, Class class1, Object aobj[]);

}

2、看护者(Advisor)

/**

* 看护者接口

*/

public interface Advisor {

//切面是否为per instance

public boolean isPerInstance();

//获取切面上的看护

public Advice getAdvice();

}

/**

* 看护者子接口,Spring中标准的切面都应该实现此接口

*/

public PointcutAdvisor extends Advisor {

//获取看护者的切点

public Pointcut getPointcut();

}

为了看的明白,照样回首一下框架图:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: