美文网首页
Spring Boot定时任务

Spring Boot定时任务

作者: 飞扬小初 | 来源:发表于2016-12-22 21:35 被阅读0次

    Spring Boot定时任务

    学习使用Spring的@Scheduled注解来每隔5秒钟定式打印当前时间。

    使用Maven构建项目

    <?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</groupId>
        <artifactId>cnc</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.4.0.RELEASE</version>
        </parent>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Camden.SR3</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-config</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka</artifactId>
            </dependency>
        </dependencies>
    </project>
    

    需要加入Spring boot依赖包。

    创建定时任务

    创建一个定时任务类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注解定义了方法何时启动。可以通过定义fixedRate来定义执行频率或者fixedDelay来定义在上一个任务结束后延时多少毫秒来执行这个任务。甚至可以通过@Scheduled(corn="")来更加精确定义任务。

    启动定时任务

    虽然任务类可以在web或者app中运行,但是最简单的方法还是使用main函数来执行。

    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配置类
    • @EnableAutoConfiguration自动配置
    • @ComponentScan扫描被注解为Component的类
    • @EnableWebMvc如果是MVC项目,则自动配置mvc

    毫无xml配置文件的痕迹!!!
    @EnableScheduling确保后台启动线程来调度任务。

    相关文章

      网友评论

          本文标题:Spring Boot定时任务

          本文链接:https://www.haomeiwen.com/subject/gpmhvttx.html