spring定时任务:@Scheduled

xiaoxiao2021-02-28  42

1. 在applicationContext.xml里加入task的命名空间

xmlns:task="http://www.springframework.org/schema/task" http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.1.xsd

2. 在applicationContext.xml中配置定时任务线程池,启用注解式定时任务

<task:annotation-driven scheduler="myScheduler"/> <!-- 定时器开关--> <task:scheduler id="myScheduler" pool-size="5"/>

3. 方法上使用注解,指定cron

package test; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @Component public class ScheduledTest { @Scheduled(cron = "0/2 * * * * ? ") // 每隔2秒执行一次 public void testScheduled(){ System.out.println("1"); } }

spring的定时任务默认是单线程,多个任务执行起来时间会有问题(B任务会因为A任务n秒执行一次,而延后n秒),配置了线程池就不会延后了。

@Component注解:泛指各种组件,当此类不属于mvc的归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类,实例化到spring容器。

cron表达式:参考https://www.cnblogs.com/xiandedanteng/p/3678650.html

转载请注明原文地址: https://www.6miu.com/read-2399988.html

最新回复(0)