4

我正在尝试在 Spring 集成的帮助下做一个 ftp 轮询器,并且轮询器与 xml 配置配合得很好。现在我希望能够动态设置轮询器的一些属性,例如 cron 表达式或轮询率,以使其可以通过 java 代码进行配置并将其链接到 Web 界面。

我已经看到了很多关于这个主题的主题,但没有什么真正清楚的。
有没有经典的方法呢?
可以用 SpeL 完成吗?

我在 XML 中的 bean poller 声明如下:

<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 托管对象的引用,您可以通过让您的一个类实现 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 回答