问题描述
我正在按照以下示例在示例项目中创建计划任务: https://spring .io/guides/gs/scheduling-tasks
I was following this example to create a scheduled task in a sample project: https://spring.io/guides/gs/scheduling-tasks
它说,@EnableScheduling ensures that a background task executor is created. Without it, nothing gets scheduled.
但是,由于错误,我没有使用它.它怎么仍然起作用?
But, by mistake i didn't use it. How come it still works?
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
其他课程:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
@Component
public class ScheduledTaskRunner {
Logger log = LoggerFactory.getLogger(ScheduledTaskRunner.class);
@Scheduled(cron = "0/1 * * * * *")
public void run(){
log.info("Hello");
}
}
排定的任务不应该运行吗?
Isn't the scheduled task supposed to not run?
推荐答案
添加了spring-boot-starter-actuator
的代码也添加了调度程序.执行器使用此调度程序来调度度量标准的自动导出.
Your code added the spring-boot-starter-actuator
when that is added a scheduler is added as well. This scheduler is used by the actuator to schedule the automatic export of the metrics.
此代码位于 MetricExportAutoConfiguration
,并且已在Spring Boot 1.3.0中添加.
The code for this is in the MetricExportAutoConfiguration
and has been added in Spring Boot 1.3.0.
因此,如果您删除执行器,将无法再进行调度.
So if you remove the actuator scheduling won't work anymore.
这篇关于Spring-boot调度程序在没有@EnableScheduling批注的情况下运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!