Springタイミングタスク@Scheduled注記の使用

3632 ワード

xmlの方式はここで書かないで、使うのも比較的に面倒で、ここで1篇の教程を放します
https://blog.csdn.net/qq_33556185/article/details/51852537
以下はSpring Bootの統合@Scheduledの使い方です
まずSpring Taskの構成クラスを書き、スレッドプールを構成し、1つのタイミングタスクの実行時間が長すぎるため、他のタイミングタスクのエラーを防止します.
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;

import java.util.concurrent.Executors;

@Configuration
public class SchedulerConfig implements SchedulingConfigurer {

    //     
    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.setScheduler(Executors.newScheduledThreadPool(100));
    }
}

そして自分のタイミングタスクを書きます
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.time.Instant;
import java.util.Date;

@Component
@Slf4j
public class MyScheduler {

    @Scheduled(fixedRate = 2000)
    public void firstTask(){
        log.info("       ,  :" + new Date());
    }

    @Scheduled(cron = "* * * * * ?")
    public void secondTask(){
        log.info("         ,  : " + Instant.now());
    }
}

最後にSpring Boot起動クラスに@EnableScheduling注記オープンタイミングタスクを付ければいいです