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

回到顶部