3

プロジェクトで Spring MVC と Camel を使用していますが、producerTemplate を Autowired できないという問題が発生しています。下記詳細をご確認の上、

ファイル 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"/>

camel-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);
...
}

誰かが私が間違っていることを指摘できますか?

4

2 に答える 2

1

おそらく、CammelConnectorImp が Spring の既知の Bean であることを確認する必要があります。

@Bean
public class CamelConnectorImp{ ..

(アップデート:)

@Bean が取得されるように、おそらくこの pojo もスキャンする必要があります。

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

または同様の何かがおそらく役立つでしょう。

于 2012-11-07T10:06:44.487 に答える
0

わかりました、ついにそれを理解しました。原因は、アプリケーション コンテキストで Bean を使用しなかったためです。代わりに、この方法でそのコネクタを作成しました。

IConnector connector = new CamelConnectorImp();

これは間違っています。camelContext がこのインスタンスにないのも不思議ではありません。

私のせいです。

于 2012-11-07T10:29:12.660 に答える