每一个advisor中一般只定义一个切入点,如果有这样的需求,我们相对一个类中的getter和setter方法都进行通知,一般来说只能定义两个切入点来实现,但没有一个切入点可以同时处理两个,当然,我们可以利用新的逻辑创建一个切入点,但更好的方式是使用ComposablePointcut组合切入点,利用他的切入点union(交集)和intersection(并集)的特性组合两个切入点
union和 intersection方法的参数是ClassFilter和MethodMatcher参数
调用接受MethodMathcher的union()方法将ComposablePointCut的MethodMatcher改为一个UnionMethodMathcer,他包含现有的MethodMatcher和union()的MethodMatcher的并集,当任何一个返回true时候,则UnionMethodMathcer返回true,参数ClassFilter也会生成类似的结构
intersection原理和union类似,只是当两个MethodMathcer全部为true方返回true
BeanOne.java














SimpleAdvise.java


















测试
























































































运行结果:
before
foo-one
after
before
bar-one
after
-------------------------
foo-one
bar-one