면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
봄 부팅 작업 타이밍에 구현, 우리는 두 가지 옵션이 있습니다, 하나의 봄은 다른 타사 프레임 워크 석영을 사용하는 것입니다, 일반 작업 프로세서 @Scheduled 노트와 함께 제공됩니다. 여기에서 우리는 시뮬레이션을위한 두 가지 방법이 있습니다.
1 타이밍 주석 태스크 프로세서 @Scheduled
첫째, 우리는 @EnableScheduling 주석 일반 작업에 대한 지원을 제공 주석의 시작 클래스를 @EnableScheduling 추가 할 수 있습니다.
@SpringBootApplication
@EnableScheduling
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
그런 다음 우리는 일반 작업의 기능을 구현하는 클래스를 만듭니다.
@Component
public class ScheduledTest {
//fixedRate 表示两次任务的开始时间间隔
@Scheduled(fixedRate = 10000)
public void fixedRate() {
System.out.println("fixedRate " + new Date());
}
//fixedDelay 表示本次任务结束到下次任务开始之间的时间间隔。
@Scheduled(fixedDelay = 4000)
public void fixedDelay() {
System.out.println("fixedDelay " + new Date());
}
//initialDelay 表示首次任务启动的延迟时间
@Scheduled(initialDelay = 5000,fixedDelay = 2000)
public void initialDelay() {
System.out.println("initialDelay " + new Date());
}
}
예약 주석이 시간 초과 작업을 시작 @합니다. 그리고 모든 시간 단위는 밀리 초입니다. 다음과 같이 테스트 결과는 다음과 같습니다
2 석영 사용
우리는 기능이 비교적 간단 실현하려는 경우 프로젝트에서, 당신은 그렇지 않으면 우리는 일반적으로 타이밍 작업을 달성하기 위해 석영을 사용하도록 선택, @Scheduled 노트를 사용할 수 있습니다.
첫째, @Scheduled 비슷한 추가 @EnableScheduling 주석 시작 클래스를 주석을 사용합니다.
@SpringBootApplication
@EnableScheduling
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
}
석영의 의존도를 추가
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-quartz</artifactId>
</dependency>
이제 작업 클래스를 만들어 보자는 QuartzJobBean을 상속 할 필요가
@Component
public class Job extends QuartzJobBean {
//执行定时任务
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
System.out.println("I want to do something!" + new Date());
}
}
그런 다음 우리는 구성 클래스를 생성
@Configuration
public class QuartzConfig {
// 配置定时任务
@Bean
public JobDetail testQuartzDetail() {
return JobBuilder.newJob(Job.class).withIdentity("Job")
.storeDurably().build();
}
// 配置定时任务的触发器,也就是什么时候触发执行定时任务
@Bean(name = "jobTrigger")
public Trigger testQuartzTrigger() {
SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(3) // 设置时间周期单位(秒)
.repeatForever();
return TriggerBuilder.newTrigger().forJob(testQuartzDetail())
.withIdentity("Job")
.withSchedule(scheduleBuilder)
.build();
}
}
다음과 같이 프로그램을 실행합니다 :