2012-11-07 65 views
3

我在我的項目中使用Spring MVC和駱駝,但遇到生產者模板不能自動裝配的問題。請檢查下面的細節,駱駝生產者模板不是在春天注入MVC​​

文件的web.xml:

<context-param> 
<param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/dispatcher-servlet.xml</param-value> 
</context-param> 

文件ispatcher-servlet.xml中

<import resource="camel-config.xml"/> 

文件駱駝-config.xml中,定義camelContext

<context:component-scan base-package="com.myproject.camel.routes"/> 
<camelContext xmlns="http://camel.apache.org/schema/spring" id="myproject.camel"> 
    <contextScan/> 
<template id="producerTemplate"/> 
</camelContext> 

這裏是我的JAVA課程:

package com.myproject.connector.camel; 
public class CamelConnectorImp{ 
    @Autowired 
    private ProducerTemplate producerTemplate; //This is null after starting 
    producerTemplate.requestBodyAndHeaders(serviceEndpoint,request, headers); 
... 
} 

有人能指出我做錯了嗎?

回答

1

您可能需要確保CammelConnectorImp是Spring的已知bean。

@Bean 
public class CamelConnectorImp{ .. 

(更新:)

你或許應該掃描該POJO以及,使@Bean被拾起:

<context:component-scan base-package="com.myproject.camel.routes,com.myproject.connector.camel"/> 

或類似可能會幫助一些東西。

+0

謝謝佩特,我試過使用@Component,但它沒有工作 – Uda

0

好的,我終於明白了。 的原因是,我沒有使用在應用程序上下文中的bean,相反,我創造了這個方式,連接器,

IConnector connector = new CamelConnectorImp(); 

這是不對的,難怪camelContext是不是在這種情況下。

我的錯。

+1

是的,就像我的回答說的,你應該拿起CamelConnectorImp作爲bean。 –

+0

謝謝Petter! – Uda