【译】Scheduling Tasks

原创
2017/03/31 23:40
阅读数 34

原文链接 本指南讲指导你如何使用Spring Scheduling Tasks

你需要写一个怎样的程序

你将使用Spring的@Scheduled注解写一个每五秒打印一次当前时间的程序。 #你需要什么

如何完成本指南

就像大多数Spring Getting Started guides,你可以从头构建你的程序,也可以跳过已经熟悉的基础部分。无论使用哪种方式,最终都将构建出可以工作的程序。

要从头开始,请继续使用Gradle构建。

要跳过基本操作,请执行以下操作:

  • 通过Git下载或者Clone本指南的代码。
git clone https://github.com/spring-guides/gs-scheduling-tasks.git
  • 进入gs-scheduling-tasks/initial
  • 直接看创建一个 scheduled task

通过Maven构建项目

首先你创建一个基本的构建脚本。 使用Spring构建应用程序时,您可以使用任何您喜欢的构建系统,但是这里需要你使用Maven来构建代码。 如果您不熟悉Maven,请参阅使用Maven构建Java项目

创建目录结构

在你的项目目录下,创建以下子目录。例如,在*unx系统下使用 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.5.2.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 Maven插件提供了许多方便的功能: - 它集合了classpath上所有的jar包,并构建了一个可运行的“über-jar”,这样更加方便执行你的应用。 - 自动查找public static void main()来标记为可运行类。 - 它提供了一个内置的依赖关系解析器,它将版本号设置为与Spring Boot依赖关系相匹配。 您可以覆盖任何您想要的版本,但它将默认为Boot的所选版本集。

Create a scheduled task

现在你已经创建了基本应用,现在可以来创建一个scheduled task

新建文件src/main/java/hello/ScheduledTasks.java

package hello;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component
public class ScheduledTasks {
    private static final Logger log = LoggerFactory.getLogger(ScheduledTasks.class);
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
    @Scheduled(fixedRate = 5000)
    public void reportCurrentTime() {
        log.info("The time is now {}", dateFormat.format(new Date()));
    }
}

@Scheduled注解定义了方法何时运行。 NOTES:例子中使用的fixedRate参数是指定从开始调用算起的间隔时间。还有其他的选择,像fixedDelay,其指定从完成任务算起的调用之间的间隔,也可以使用 @Scheduled(cron=". . .")表达式来表示更复杂的调用

启用Scheduling

虽然Scheduling Task可以嵌入到Web应用程序和WAR文件中,下面演示的更简单的方法,创建了一个独立的应用程序。 您可以在一个可执行的JAR文件中打包所有内容,由 main()方法启动。 创建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
@EnableScheduling
public class Application {
    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class);
    }
}

@SpringBootApplication是一个非常方便的注解,它包含以下所有内容: @Configuration 将这个类标记为应用程序上下文, 。。。。。。。。。未完待续

展开阅读全文
打赏
0
1 收藏
分享
加载中
更多评论
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部