记录一次排查@Schedule不生效的问题

问题背景:定时任务更新离职的员工在系统的有效期
思路:使用spring自带的定时任务实现,简单,一个注解搞定-- @Schedule
踩坑开始:
由于是老项目,spring mvc,spring 版本4.2.0.RELEASE,没有spring boot自带的注解便捷,所以得按照老路,把需要的bean注入

    <els-base.version>0.0.1-SNAPSHOT</els-base.version>
      <els-base-wt.version>0.0.1</els-base-wt.version>
    <project.build.sourceEncoding>GBK</project.build.sourceEncoding>
	<spring.version>4.2.0.RELEASE</spring.version>

坑点1:按照正常使用注解 spring boot 方式,不生效

@Configurable
@EnableScheduling
public class ScheduleJob {
    @Scheduled(cron = "*/3 * * * * *")
    public void updateSsoUserInfo() {
        System.out.println("3秒执行一次");
    }
}

原因:spring 版本不支持

坑点2:使用spring 注入bean的方式,也不生效

@Service
public class ScheduleJob {
    @Scheduled(cron = "*/5 * * * * *")
    public void updateSsoUserInfo() {
        System.out.println("5秒执行一次");
    }
}

原因:由于是老项目,需要扫描到使用注解@service的包,@Service和@Schedule一起搭配, 问题解决

<!-- 自动扫描(自动注入),扫描com.els.service这个包以及它的子包的所有使用@Service注解标注的类 -->
	<context:component-scan base-package="com.els.service,com.els.*.service, com.els.job" />
	

后续:等有时间了再深入研究下spring不同版本对定时任务的原理

猜你喜欢

转载自blog.csdn.net/Tomcat_king/article/details/120324201