Spring AOP不适用于另一个方法中的方法调用
ABC.java中定义了两种方法
public void method1(){ .........
method2();
...........
}
public void method2(){
...............
...............
}
我想有AOP上的呼叫方法2。所以,我创建了一个类,AOPLogger.java,具有在方法提供方面功能的checkAccess
在配置文件中,我不喜欢的东西下面
<bean id="advice" class="p.AOPLogger" /><aop:config>
<aop:pointcut id="abc" expression="execution(*p.ABC.method2(..))" />
<aop:aspect id="service" ref="advice">
<aop:before pointcut-ref="abc" method="checkAccess" />
</aop:aspect>
</aop:config>
但是当调用我的method2时,不会调用AOP功能,即不会调用AOPLogger类的checkAccess方法。
回答:
该方面应用于围绕bean 的代理。请注意,每次获得对bean的引用时,实际上并不是配置中引用的类,而是实现相关接口的综合类,该类委托实际的类并添加功能(例如AOP)。
在上面的示例中,你直接在类上调用,而如果将该类实例作为Spring bean注入到另一个实例中,则将其作为其代理注入,因此将在代理上调用方法调用(并且将触发方面) )
如果要实现上述目标,则可以将method1/ 拆分method2为单独的bean,或使用非基于Spring的AOP框架。
以上是 Spring AOP不适用于另一个方法中的方法调用 的全部内容, 来源链接: utcz.com/qa/427345.html