SpringBoot中如何执行定时任务呢?

书欣 SpringBoot 发布时间:2022-08-31 22:51:14 阅读数:17776 1
下文笔者讲述springboot中执行定时任务的方法分享,如下所示
在日常开发中,
    我们需定时运行一些任务
	如:天气数据获取,定时发送短信,定时发送邮件
	定时自动收货

那么springboot中如何运行定时任务呢?下文笔者将一一道来,如下所示
实现思路:
    springboot启动类上加入相应
	开启定时任务的注解@EnableScheduling
例:
/**
 * 启动类
 */
@RequestMapping(value = "/")
@RestController
@SpringBootApplication
@MapperScan(basePackages = "com.java265.dao")
@Configuration
@EnableSwagger2
@EnableScheduling
public class Round1Application {

    @RequestMapping(value = "/",method = RequestMethod.GET)
    public String helloWorld(){
        return "Hello World";
    }
    public static void main(String[] args) {
        SpringApplication.run(Round1Application.class, args);
    }


    @Bean
    public Docket createApi(){
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                .apis(RequestHandlerSelectors.basePackage("com.java265.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo(){
        return new ApiInfoBuilder()
                .title("API文档")
                .description("API使用即参数定义")
                .termsOfServiceUrl("http://java265.com")
                .contact("java265")
                .version("0.1")
                .build();
    }
}

//创建实现定时任务Service
@Component
public class QuartzService {
    //每分钟启动
    @Scheduled(cron = "0 0/1 * * * ?")
    public void timerToNow(){
        System.out.println("now time:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }
}

定时器定义
@Scheduled

@Scheduled(fixedRate = 5000)
public void timerToZZP(){
	System.out.println("ZZP:" + new Random().nextLong() + new SimpleDateFormat("HH:mm:ss").format(new Date()));
}

@Scheduled(fixedDelay = 50000)
public void timerToReportCount(){
	for (int i = 0; i < 10; i++){
		System.out.println("<================its" + i + "count===============>" + new SimpleDateFormat("HH:mm:ss").format(new Date()));
	}
}

@Scheduled(initialDelay = 50000,fixedRate = 6000)
public void timerToReport(){
	for (int i = 0; i < 10; i++){
		System.out.println("<================delay :" + i + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "count===============>");
	}
}

注解属性功能说明

fixedRate:
    上一次 启动时间点之后 X秒执行一次
fixedDelay:
    上一次 结束时间点之后 每X秒执行一次
initialDelay:
     第一次延迟 X秒执行
     之后按照fixedRate的规则每X秒执行 
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/SpringBoot/202208/4288.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者