我希望每 10 秒运行一次任务。当我在applicationContext.xml
文件中声明 Bean 时,一切都按预期工作。当我简单地用 注释 Bean 时@Component
,任务永远不会执行。我的代码/配置如下所示:
QueueProcessor.scala
package example.components
// imports removed for brevity
@Component
class QueueProcessor {
@Scheduled(fixedDelay = 10000)
def poll() = {
println("polling queue")
}
}
applicationContext.xml
<context:component-scan base-package="example.components" />
<task:executor id="genericExecutor" pool-size="2" />
<task:scheduler id="genericScheduler" pool-size="2" />
<task:annotation-driven executor="genericExecutor" scheduler="genericScheduler" />
<bean id="queueProcessor" class="example.components.QueueProcessor" />
如果我只是在我的 , 中添加一行applicationContext.xml
,那么任务会按预期每 10 秒执行一次。我已经验证了example.components
包中的其他类正在通过注释进行实例化,因此没有发现这个类不应该是问题。
关于还有什么可能是错误的任何想法?
编辑:我将该行<task:annotation-driven executor="genericExecutor" scheduler="genericScheduler" />
移至我的servlet.xml
文件中。这解决了问题。这是否与读取文件的顺序有关?