为什么Spring不运行我的@Scheduled方法?
|
我有点困惑,因为我正在尝试使用use
@Scheduled
注释,但是Spring似乎找不到我的方法。最终结果是,我所有带有@Scheduled
的方法都没有执行。
我使用以下声明调用了Spring的任务魔术:
<beans> <!-- XMLNS, XSD declarations omitted for brevity -->
<context:component-scan base-package=\"com.mypackage\"/>
<task:executor id=\"executor\" pool-size=\"5\"/>
<task:scheduler id=\"scheduler\" pool-size=\"5\"/>
<task:annotation-driven scheduler=\"scheduler\" executor=\"executor\"/>
</beans>
我有一个看起来像这样的界面:
package com.mypackage;
public interface MyInterface {
public void executePeriodically();
}
带有如下所示的对应隐式:
package com.mypackage.impl;
// imports omitted for brevity
@Service
public class MyInterfaceImpl implements MyInterface {
@Scheduled(cron = \"0/5 * * * * ?\")
public void executePeriodically() {
System.out.println(\"The time is now : \" + new Date());
}
}
现在的预期结果是,我有一个非常吵闹的小家伙每隔5秒告诉我什么时间……但实际上我什么也没得到。我已经尝试过在interface方法和impl方法上使用批注,但这似乎并没有改变任何东西。
我肯定知道执行程序和调度程序正在初始化,因为我的日志中包含以下内容:
INFO - ThreadPoolTaskExecutor - Initializing ExecutorService
INFO - XmlWebApplicationContext - Bean \'executor\' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
INFO - XmlWebApplicationContext - Bean \'executor\' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
INFO - ThreadPoolTaskScheduler - Initializing ExecutorService \'scheduler\'
INFO - XmlWebApplicationContext - Bean \'scheduler\' is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
我不确定有关不合格的说法是否相关或是红色鲱鱼。
目前,我正在通过声明计划任务来解决此问题,如下所示:
<task:scheduled-tasks>
<task:scheduled ref=\"sourceDocumentManagerImpl\" method=\"deleteOldDocuments\" cron=\"0 0 * * * ?\"/>
</task:scheduled-tasks>
尽管这可以很好地工作,但我宁愿使用批注,因为在代码中直接查看对该方法的期望非常方便。有人知道我可能做错了吗?作为记录,我使用的是Spring 3.0.4
谢谢一群!
没有找到相关结果
已邀请:
8 个回复
弦砂牧扁
参考http://howtodoinjava.com/2013/04/23/4-ways-to-schedule-tasks-in-spring-3-scheduled-example/ 要么 Spring @Configuration(非XML配置)用于注释驱动的任务 只需在您的WebMvcConfig类上添加@EnableScheduling
参考Spring Scheduler不起作用
傻零凰死授
注释有关。我有一个切入点声明,用事务建议将
方法包装起来,这似乎是问题的根源。如果我删除建议,则作业将运行。如果我重新添加它,Spring将无法为我的注释方法找到并创建任务。 因此,我将向Spring人员提交一个错误,与此同时,我将不得不手动声明任务。
舶啥戚
dispatcher-servlet.xml
希望能帮助到你。
暑袜眠退
玩翁文醚碱
而不是
标注。其他要检查的内容: 您是否在类路径上有合适的罐子(我认为是spring-context) 放置一个断点并检查它是否真的没有执行 仔细检查cron表达式(我承认我总是为此查阅文档)。或使用固定的延迟,仅检查其是否有效 尝试升级到3.0.5或最新的3.1快照。
贡炮逗握惫
我的春季版本3.2.3
泪琉踞檄
注释方法的类中添加
时,它才起作用。
掏得透垦滩
然后:
在我的applicationContext.xml的尾声中: