当前位置: 首页 > 知识库问答 >
问题:

Spring AOP不适用于其他方法内的方法调用

卢文博
2023-03-14
public void method1(){
   .........
   method2();
  ...........
}


public void method2(){
  ...............
  ...............  
}
<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方法

我错过什么了吗?

共有1个答案

尤飞尘
2023-03-14

方面应用于bean周围的代理。请注意,每次获得对bean的引用时,实际上并不是配置中引用的类,而是实现相关接口、委托给实际类并添加功能(如AOP)的合成类。

在上面的示例中,您直接在类上调用,而如果那个类实例作为Spring bean注入到另一个类中,它就作为它的代理注入,因此将在代理上调用方法调用(并且将触发方面)

如果您想要实现上述功能,可以将method1/method2拆分为单独的bean,或者使用非Spring导向的AOP框架。

 类似资料:
  • 问题内容: ABC.java中定义了两种方法 我想有AOP上的呼叫方法2。所以,我创建了一个类,AOPLogger.java,具有在方法提供方面功能的checkAccess 在配置文件中,我不喜欢的东西下面 但是当调用我的method2时,不会调用AOP功能,即不会调用AOPLogger类的checkAccess方法。 问题答案: 该方面应用于围绕bean 的代理。请注意,每次获得对bean的引用

  • 问题内容: 是否有一种方法可以使每次调用方法时都会被调用的“超级方法”,即使对于未定义的方法也是如此?有点像这样: 编辑- 细节:我有一个库,该库进行了很多更新,并且每次更新都变得晦涩难懂。为了简化我的工作流程,我正在使程序自动更新库(需要执行我想做的事情,我不会具体说明原因,但是我的程序可以与将来的更新一起使用)并且我有混淆映射与库一起下载时,我想制作一种例如称为的代理,然后在我调用它时,将获得

  • 您好,我正在尝试使用PostConstruct方法初始化字段,但在测试中,此方法不会填充bidiMap字段。 有没有办法模拟字段,它是的字段? 测试: 正在测试的类:

  • 起初,我在使用< code>writeAndFlush(...)直到我偶然发现了这个修复。现在,我已经可以使用< code>writeAndFlush(...)每个字符串都带有后缀/r/n。当我尝试发送< code>ByteBuf对象时,问题仍然存在。显然,我不能只在消息末尾添加/r/n。对此有什么解决办法吗? 如果有帮助,我将使用

  • 所以我得到了两个都在同一activity的视图。我正在使用但是,我无法调用在uiview中定义的公共方法... 我对AndroidStudio还很陌生,我在这里发现的只是不同的类,而不是观点。 非常感谢!