非springboot的 spring项目使用定时任务
时间: 2023-07-19 12:26:16 浏览: 145
非 Spring Boot 项目中使用定时任务,可以通过 Spring 提供的 `TaskScheduler` 接口来实现。
1. 首先,在 Spring 配置文件中配置 `TaskScheduler`:
```xml
<task:scheduler id="myScheduler"/>
```
2. 在需要执行定时任务的类中注入 `TaskScheduler`:
```java
@Component
public class MyScheduledTask {
@Autowired
private TaskScheduler myScheduler;
public void startTask() {
myScheduler.schedule(new Runnable() {
@Override
public void run() {
// 执行定时任务的业务逻辑
}
}, new CronTrigger("0 */1 * * * ?"));
}
}
```
其中,`CronTrigger` 用于定义定时任务的执行时间,与 Spring Boot 中使用 `@Scheduled` 注解的 `cron` 表达式功能相同。
除了 `CronTrigger`,`TaskScheduler` 还支持 `PeriodicTrigger` 和 `FixedRateTrigger` 等触发器类型,用于定义间隔时间。
例如,每隔 5 秒执行一次定时任务:
```java
public void startTask() {
myScheduler.schedule(new Runnable() {
@Override
public void run() {
// 执行定时任务的业务逻辑
}
}, new FixedRateTrigger(5000));
}
```
注意,定时任务的方法必须是无参无返回值的方法,否则会抛出异常。另外,定时任务的执行时间应该尽量短,避免阻塞其他任务的执行。
阅读全文