4

Spring 統合の助けを借りて ftp ポーラーを実行しようとしていますが、ポーラーは xml 構成でうまく機能します。ここで、cron-expression やポーリング レートなどのポーラーのいくつかのプロパティを動的に設定して、Java コードで構成可能にし、Web インターフェイスにリンクできるようにしたいと考えています。

この件に関して多くのトピックを見てきましたが、それを行うのに本当に明確なものはありません.
それを行う古典的な方法はありますか?
SpeL でできますか?

XML での私の Bean ポーラー宣言は次のとおりです。

<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>
4

1 に答える 1

1

確かな答えを得るには十分かどうかはわかりませんが、ftp ポーラーが定義され、Spring コンテナーで管理されていると仮定し、そのプロパティを変更するための適切なアクセサリがあると仮定します...それを変更できるようになります他のオブジェクトと同じように設定します。

最初に、Spring 管理対象オブジェクトの参照を取得する必要があります。これは、クラスの 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;
   }

}
于 2011-12-09T17:16:49.083 に答える