Spring学习心得(五)
1. 对advice细粒度的控制,可以通过pointcut类来控制。
2. advisor是advice和pointcut的集合体。
3. 控制方法如下:
a) 定义Pointcut中的ClassFilter实现类和MethodMatcher实现类,完成对class和method方法的advice的控制,其中MethodMatcher中的matches(Method method, Class targetClass)方法是对class和method的双重并集控制
b) 定义新的Pointcut实现类,并将ClassFilter实现类和MethodMatcher实现类赋值
c) 定义新的advisor并且实现PointcutAdvisor接口
d) 在定义的advisor中使用PointcutAdvisor接口中的getPointcut()和getAdvice()将Pointcut的实现类和需要的advice进行传递
e) 最后在application-context.xml中将
<bean id="XXXX"
class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="InterceptorNames">
<list>
<idref local="定义新的advisor的id">
</list>
<property>
</bean>
<bean id="定义新的advisor的id" class="定义新的advisor的类 " >
</bean>
4. 为了使用静态的Pointcut,可以使用StaticMethodMatcherPointcut,这时候
public final boolean isRuntime()
{
return false;
}
便不能修改了。也就是静态的Pointcut
5. 更简单的是使用NameMatchMethodPointcutAdvisor,这里一个advisor只有一个advice
v