【问题标题】:Spring AOP not triggering on bean in spring integrationSpring AOP在spring集成中没有触发bean
【发布时间】:2016-03-04 16:58:45
【问题描述】:

我试图在我的 spring 集成服务中的一个 bean 被调用之前触发一个方面并做一些事情。到目前为止,这是我的代码..

global-context.xml

<aop:aspectj-autoproxy/>
...
<bean class="com.ryanstull.spring.integration.DebugAdvice"/>

这是我的 Spring 集成管道中的 bean

package com.ryanstull.spring.integration;

import org.springframework.integration.annotation.Transformer;

public class DebugTransformer{

    @Transformer
    public Object transformPayload(Object arg0) throws Exception{
        System.out.println("In debug transformer");
        return arg0;
    }
}

我的一面

@Aspect
public class DebugAdvice{

    public DebugAdvice(){
    }

    @Before("within(com.ryanstull.spring.integration..*) && execution(public * *(..))")
    public void tester(){
        System.out.println("Before Debug Transformer advice.");
    }
}

但由于某种原因,每当我运行我的应用程序时,我只看到“在调试转换器中”,而且似乎我的建议从未被触发。

另外,我正在开发一个使用 spring 3.2.3 和 spring integration 2.2.4 的遗留应用程序

【问题讨论】:

  • 只检查你的spring配置文件,不确定但我认为你没有配置DebugTransformer类
  • 除了声明 bean 之外,您还需要如何配置它?
  • 在您的 global-context.xml 文件中,您只添加了已发布的 DebugAdvice bean,但未添加 DebugTransformer 。可能你错过了
  • 哦,这是在我的 spring 集成服务文件中声明的

标签: java spring spring-integration spring-aop


【解决方案1】:

有趣;如果转换器是 POJO(即删除 extends AbstractPayloadTransformer&lt;Object,Object&gt;),它就可以工作。

我们通常建议使用 POJO,但如果您想扩展 AbstractPayloadTransformer,那么...

<aop:aspectj-autoproxy proxy-target-class="true" />

...有效。

【讨论】:

  • 感谢加里的快速答复!我更新了我的代码,因此 Transformer 现在是基于注释的,但不幸的是它仍然无法正常工作。我在最初的问题中忘记提到的是,这是一个遗留应用程序,并且在 spring 3.2.3 和 spring 集成 2.2.4 上运行,所以这可能会影响结果
  • 我刚刚使用这些版本进行了测试,得到了相同的结果——使用 POJO 转换器或 proxy-target-class。我把它推到my sandbox here
  • 嗯,由于某种原因它仍然无法正常工作。我没有提到的另一件事是我的项目处于脱机状态,所以我不确定解决“”标签是否会出现问题。如果这不是问题,我想它一定是我的项目配置中的其他内容。
  • 不应该 - Spring 从 jar 中解析 XML 模式。也许 DEBUG 日志记录会有所帮助。
  • 如果我尝试使用 "proxy-target-class="true" 我的应用程序无法启动,并且我收到一堆关于无法生成某些类的子类的错误。我猜这是因为 Spring AOP 使用代理来实现方面。我不明白的是为什么 proxt-target-class="true" 使一些不相关的类受到方面的影响。有没有办法获得提供的功能通过 proxt-target-class="true" 但只针对我需要的一个类?
猜你喜欢
  • 1970-01-01
  • 2014-12-24
  • 2019-09-15
  • 2021-07-22
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多