Spring AOP在Spring集成中不会触发bean

时间:2016-03-04 16:58:45

标签: java spring spring-integration spring-aop

我正在尝试获取一个方面来触发并在调用我的spring集成服务中的一个bean之前执行某些操作。到目前为止,这是我的代码..

全局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

的遗留应用程序

1 个答案:

答案 0 :(得分:0)

有趣;如果变换器是POJO(即删除extends AbstractPayloadTransformer<Object,Object>),它就可以工作。

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

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

...作品。