2012-07-25 192 views
0

我有一个入站文件通道适配器,auto-startup属性设置为false。这个适配器是我的应用程序的起点;如果它没有发送通知文件系统的消息,我希望其他所有内容都是惰性的。弹簧集成 - 控制自动启动

但是,在启动我的上下文时,消息开始流经系统。为什么?

配置:

<int-file:inbound-channel-adapter auto-startup="false" id="fileWatcher" directory="${input.dir}" channel="incomingFiles"> 
    <int:poller fixed-rate="1000"></int:poller> 
</int-file:inbound-channel-adapter> 

<int:channel id="incomingFiles"></int:channel> 

主要方法:

public static void main(String[] args) { 
    logger.info("Started application"); 
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring-config/*.xml"); 
    context.start(); 
} 

日志:

[...] 
12:06:56.743 [main] INFO o.s.i.e.SourcePollingChannelAdapter - started fileWatcher 
12:06:56.770 [task-scheduler-6] INFO o.s.i.file.FileReadingMessageSource - Created message: [[Payload=C:\input\From Spreadsheet.txt][Headers={timestamp=1343214416770, id=b8e92486-d469-406e-8787-df78e23b287a}]] 

回答

6

一套自动启动适配器上= “假”(这是默认为true) 。

您可以手动启动它,获取对它的引用并调用fileWatcher.start()。如果您包含集成MBean导出器,则也可以通过JMX使用此功能。

或者,您可以发送一条消息到其有效负载中包含'@ fileWatcher.start()'的< control-bus/>。

哦;我只注意到你已经拥有了它。

不要调用context.start() - 它将启动所有的bean,无论它们的自动启动设置如何。

自动启动控制,错误,自动启动 - 您手动启动上下文。

+0

谢谢加里!我没有意识到建设足以隐含地“开始”豆类。 – 2012-07-26 08:13:35