2016-05-07 13 views
1

公開されているクラス(他のPOJOクラスで利用可能)とプライベートメンバーが1つautowiredされているweb-appを実行しています。POJOからSpring管理対象オブジェクトを呼び出す方法は?

スプリング管理クラス

public class EPSQueueSender { 
    @Autowired 
    private AmqpTemplate epsMessageTemplate; 

    public void dosomething(...){ 
    epsMessageTemplate.convertAndSend(...); // Here epsMessageTemplate is null if instance of EPSQueueSender taken from other POJO 
    } 
} 

POJOクラス

public class Test{ 
     EPSQueueSender sender = new EPSQueueSender(); 
     sender.dosomething(....); // gives null exception on epsMessageTemplate 
    } 

スプリングコード(WebAppのように実行されている)とPOJOクラスコード(異なるジャー)は同じJVM上にあります。 POJOは初期化されたautowiredオブジェクトを取得できません。ただし、WebAppプロジェクトで使用すると初期化されます。

誰かがこの問題を克服するにはどうすればよいですか? 私が試してみたい最後のことは、POJOからhttpリクエストとしてWebサーバーにヒットすることです。

+0

を助けることができることを願っていますか?あなたはXMLで豆を定義しましたか、または春4に頼っていますか? – SMA

+0

xmlで定義され、xmlはサーブレットからインポートされます。したがって、このbeanは適切にautowiredされ、スプリング側コード –

+0

で初期化されます。この呼び出しをどのようにインスタンス化しますか?それは春ですか?あなたの春の設定を共有できますか? – SMA

答えて

0

beans pojoまたはxml多くの場合examplesが役立つ可能性があります。あなたはすでに@autowiredを持っていますが、@Configurationアノテーションが付いたクラスに属する@beanメソッド自体を作成していません。

0

@Configurable機能を使用して問題を解決できました。

@Configuration 
@EnableAspectJAutoProxy 
@EnableSpringConfigured 
@EnableLoadTimeWeaving 
public class ConfigApplicationContext { 
} 

この構成では、あなたがビルド - をthrougth負荷振っアスペクト技術の恩恵を受けることができます:それのためには、以下のようなJava Congigurationでbelove

<context:annotation-config/> 

    <context:spring-configured/> 
    <context:load-time-weaver/> 

のようなコードとXMLで構成していますSpring Bean AnnotationBeanConfigureAspectでは@ConfigurableでアノテーションされたpojoにSpring beanを挿入できます。あなたはistrumentsを実行するエージェントを設定する必要があり、負荷波技術を使用していることから、

@Configurable 
public class Test{ 

    @Autowired 
    private EPSQueueSender sender; 


    public void method(){ 
     sender.dosomething(....); // gives null exception on epsMessageTemplate 

    } 
    } 

もちろんの:あなたは、以下のようなコードを持っていることがcolud。 /春-instrument.jarもちろん

覚えているjarファイルのパスをエージェントに:構成が非常に簡単です、あなたは、JVMまたはTomcatを開始して、以下のような行を追加します:

のjava -javaagent AOPと春AOPのMavenの依存関係を挿入します。

<dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aop</artifactId> 
     <version>yourVersion</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-aspects</artifactId>4 
     <version>yourVersion</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-instrument</artifactId> 
     <version>yourVersion</version> 
    </dependency> 

私は、これはあなたが春がmesageTemplateを注入することを期待するにはどうすればよいあなた

関連する問題