2012-07-16 108 views
0

我有一个简单MessageProducer类,使用将消息发送到直接信道骆驼ProducerTemplate骆驼&弹簧忽略@Produce和@EndpointInject

下面是代码

@Component 
@Slf4j 
public class MessageProducer { 

    @EndpointInject(uri = "direct:app.out") 
    protected ProducerTemplate template; 

    public void sendEvent(Object payload, String eventName) { 
     Map<String, Object> headers = new HashMap<String, Object>(); 
     headers.put("eventName", eventName); 

     template.sendBodyAndHeaders(payload, headers); 

     log.debug("Sent message {}", payload); 
    } 

} 

当调试这个我发现该模板在webapp中运行时为null,但它在春季Junit测试中有效。

我不明白什么是错误的。

+0

可能是一个愚蠢的问题,但是您是否扫描组件,以便MessageProducer类在春天被拾取并初始化? – 2012-07-16 19:15:57

+3

是的春天豆后处理器需要踢,让IoC运行。骆驼测试工具包可以自动执行此操作,因此它可以通过单元测试进行工作。 – 2012-07-17 05:18:02

+0

@克劳斯,你是对的,添加一个后处理器完成了这项工作。 – Manoj 2012-07-18 13:47:36

回答

1

是的春天bean后期处理器需要踢,让IoC运行。骆驼测试工具包可以自动执行此操作,因此它可以通过单元测试进行工作。

+1

你能否详细说明如何做到这一点。?我创建了一个新的spring beanpostprocessor,但是我需要做些什么。 – mohanaki 2015-06-10 14:34:25