我正在尝试在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>
答案 0 :(得分:1)
我不确定这里是否有足够的答案,但假设在弹簧容器中定义和管理ftp轮询器,并假设有适当的访问权限来修改它的属性......你将能够改变它的设置就像你对任何其他物体一样。
首先,您必须获得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;
}
}