봄 부팅 도로의 진입 (10) --- 봄 부팅 예약 된 작업

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/Geffin/article/details/100181802

봄 부팅 작업 타이밍에 구현, 우리는 두 가지 옵션이 있습니다, 하나의 봄은 다른 타사 프레임 워크 석영을 사용하는 것입니다, 일반 작업 프로세서 @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();
    }
}

다음과 같이 프로그램을 실행합니다 :
여기에 그림 삽입 설명

참조 : 부팅 작업의 타이밍을 두 가지 방법으로 봄

추천

출처blog.csdn.net/Geffin/article/details/100181802