AOP的XML配置
最近在学Aop,在遇到有参数的配置时,特别是XML配置,出了大问题
proxy类(切面类)
public void addbefore(int a) {
//joinpoint里有目标方法里的所有信息
System.out.println("快看,它要用加法了,参数是:");
}
calculator类(被切类)
public void add(int a) {
System.out.println("加法"+a);
}
正确的XML配置:
<aop:config proxy-target-class=“true”>
<aop:pointcut expression=“execution(public void v.Calculator.add(…))and args(a)” id=“p”/>
<aop:aspect ref=“proxy”>
<aop:before method=“addbefore” pointcut=“execution(public void v.Calculator.add(int)) and args(a)” arg-names=“a” />
args(a)和 arg-name=“a” 要 同 时 存 在!
才不会报错:Pointcut is malformed: error at ::0 formal unbound in pointcut
args-name:意思是The comma-delimited list of advice method argument (parameter) names that will be matched from pointcut parameters 即Advice方法里参数名字,该名字是要与pointcut的参数名字进行匹配。
在网上查了很多资料,比如比如引用pointcut
<aop:before method=“addbefore” pointcut-ref=“p” arg-names=“a” />
也会报错的。
</aop:aspect>
</aop:config>