不加@EnableScheduling注解使@Scheduled能够正常执行
时间: 2023-12-12 15:35:07 浏览: 124
SpringBoot执行定时任务@Scheduled的方法
5星 · 资源好评率100%
根据提供的引用内容,不加@EnableScheduling注解是无法使@Scheduled能够正常执行的。@EnableScheduling注解是用来开启Spring的定时任务的,如果没有加上这个注解,Spring就不会去扫描@Scheduled注解,也就不会执行定时任务。
如果一定要不加@EnableScheduling注解使@Scheduled能够正常执行,可以通过手动创建ScheduledExecutorService线程池来实现。具体步骤如下:
1.在配置类中定义一个ScheduledExecutorService类型的bean:
```java
@Bean(destroyMethod="shutdown")
public ScheduledExecutorService scheduledExecutorService() {
return Executors.newScheduledThreadPool(1);
}
```
2.在需要执行定时任务的方法上加上@Async注解,并指定使用上一步定义的scheduledExecutorService线程池:
```java
@Async("scheduledExecutorService")
@Scheduled(fixedRate = 1000)
public void task() {
// 定时任务逻辑
}
```
但是这种方式不如使用@EnableScheduling注解方便,也不符合Spring的设计思想,因此不建议使用。
阅读全文