2011-06-29 8 views
4

私は、Spring統合の助けを借りてftpポーラーを実行しようとしています。ポーラーはxml構成でうまく機能します。今私は動的にクロール式やポーリングレートのようなポーラーのいくつかのプロパティを設定して、Javaコードで設定可能にし、Webインターフェースにリンクさせたいと考えています。Spring統合:xml構成されたBeanプロパティを動的に置き換えますか?

私は主題の周りにたくさんのトピックを見ましたが、それを行うには本当に明確なものはありません。
これを行う古典的な方法はありますか?
SpeLでできますか?次のようにXMLで

マイ豆ポーラー宣言は次のとおりです。

<int-ftp:inbound-channel-adapter id="ftpInbound" 
    channel="ftpChannel" session-factory="ftpClientFactory" 
    filename-regex=".*\.tmp$" auto-create-local-directory="true" 
    delete-remote-files="false" remote-directory="/cft-polling" local-directory="file:target/ftp-output" > 
    <int:poller fixed-rate="1000" /> 
</int-ftp:inbound-channel-adapter> 

<int:channel id="ftpChannel"> 
    <int:queue /> 
</int:channel> 
+0

いくつかの説明は非常に高く評価されます。 – Sephy

+0

私はそれを誰かが間違っている – Ralph

答えて

1

私は固体の答えのためにここに十分に存在しているわからないんだけど、FTPポーラーは、春のコンテナで定義され、管理されていると仮定して、そのプロパティを変更するための適切なアクセス権があると仮定すると、他のオブジェクトと同じように設定を変更できるようになります。

まず、春の管理対象オブジェクトの参照を取得する必要があります。これは、クラスの1つにApplicationContextAwareを実装させ、Springのコンテキストを公開することによって行うことができます。

次に、コンテキストからBeanを取得し、そのプロパティを更新するだけです。

public class MyManagedClass implements ApplicationContextAware { 
    private ApplicationContext springContext; 

    public void changeBeansProperty(){ 
     MyFtpPoller poller = (MyFtpPoller) springContext.getBean("ftpInbound"); 
     poller.setCronExpress("12 12 * * * *"); 
    } 

    public void setApplicationContext(ApplicationContext applicationContext) { 
     this.springContext = applicationContext; 
    } 

} 
関連する問題