构建一个Scheduling Tasks

来源:互联网 发布:知乎自媒体营销模式 编辑:程序博客网 时间:2024/06/05 11:34

你将搭建的

使用Spring的

@Scheduled

注解在控制台每5秒钟打印出当前时间。

工具
大概需要15分钟
一个文本编辑器
JDK1.8及以上
Maven 3.0+或者Gradle 2.3+(本文将使用Maven)
你也可以使用Spring Tool Suite (STS)直接import该工程

如何完成
如同所有的Spring入门教程,你可以选择一步一步的自己实现,也可以跳过基本的设置步骤。最终,你都将得到一份可以正常运行的代码。

如果选择按步实现,继续下一节。

如果选择跳过基本的安装部分,则执行以下命令从github获取代码:

git clone https://github.com/spring-guides/gs-scheduling-tasks.git

切换当前目录到gs-scheduling-tasks/initial,跳到Create a scheduled task步骤。
完成后,可以与gs-scheduling-tasks/complete中的代码对比一下,确保正确。

使用maven构建
建立目录结构
在你选定的工程目录下,建立如下子目录结构;例如,在*nix系统中使用mkdir -p src/main/java/hello命令:

└── src
  └── main
    └── java
      └── hello
      
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>org.springframework</groupId>    <artifactId>gs-scheduling-tasks</artifactId>    <version>0.1.0</version>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>1.3.3.RELEASE</version>    </parent>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter</artifactId>        </dependency>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

注意:本文使用了Spring Boot。

创建一个任务调度类
src/main/java/hello/ScheduledTasks.java

package hello;import java.text.SimpleDateFormat;import java.util.Date;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;@Componentpublic class ScheduledTasks {    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");    @Scheduled(fixedRate = 5000)    public void reportCurrentTime() {        System.out.println("The time is now " + dateFormat.format(new Date()));    }}

@Scheduled去配置一个特定的方法。这个例子使用的是 fixedRate,表示方法开始调用的时间间隔;可选还有 fixedDelay等,表示任务完成的间隔。你也可以使用 @Schduled(cron=”…”)表达式执行更复杂的调度。

启用调度任务
src/main/java/hello/Application.java

package hello;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.scheduling.annotation.EnableScheduling;@SpringBootApplication@EnableSchedulingpublic class Application {    public static void main(String[] args) throws Exception {        SpringApplication.run(Application.class);    }}

执行:mvn spring-boot:run
结果:
这里写图片描述

英文原文:Scheduling Tasks

0 0