在我的Web应用程序中,我正在尝试使用Java SDK7 WatchService创建目录轮询bean。我想要实现的是在自己的线程中运行此bean,以便它不会阻止应用程序。类似的东西:
<bean id="directoryPoller" class="org...MyDirectoryPoller" scope="thread"/>
答案 0 :(得分:15)
我担心您必须使用Spring手动创建此线程:
<bean id="pollThread" class="java.lang.Thread" init-method="start" destroy-method="interrupt">
<constructor-arg ref="watchServiceRunnableWrapper"/>
</bean>
<bean id="watchServiceRunnableWrapper" class="WatchServiceRunnableWrapper">
<constructor-arg ref="watchService"/>
</bean>
<bean id="WatchService" class="java.nio.file.WatchService" destroy-method="close"/>
WatchServiceRunnableWrapper
很简单:
public class WatchServiceRunnableWrapper implements Runnable {
private WatchService WatchService;
public WatchServiceRunnableWrapper(WatchService watchService) {
this.watchService = watchService;
}
public void run() {
watchService.poll();
//
}
}
我还没有对它进行测试,但它或多或少应该正常工作和关闭。
答案 1 :(得分:1)
我不熟悉Java 7的WatchService,但您可以使用Springs scheduling support。这里的yet another tutorial和谷歌搜索类似Spring Scheduled可能会发现更多的负载。