SpringBoot 통합 Quartz 입문

2565 단어 javaspringboot
머리말
Quartz 는 자바 가 완전히 작성 한 오픈 소스 작업 스케줄 링 프레임 워 크 로 자바 응용 프로그램 에서 작업 스케줄 링 을 하 는 데 간단 하면 서도 강력 한 메커니즘 을 제공 합 니 다.-by W3Cschool
Quartz 공식 문서
입문 을 시작 하 다
우선 Maven 에서 spring-boot-starter-quartz 를 도입 해 야 합 니 다.


   org.springframework.boot
   spring-boot-starter-quartz

springboot 설정,선택 가능,설정 항목 은 공식 문서 로 볼 수 있 습 니 다.
#Quartz
spring.quartz.job-store-type=memory    
spring.quartz.auto-startup=true
spring.quartz.overwrite-existing-jobs=true
spring.quartz.wait-for-jobs-to-complete-on-shutdown=true

그리고 quartz 설정 클래스 를 새로 만 듭 니 다.
@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail jobDetail_1() {
        return JobBuilder.newJob(TestJob.class)    //     
                .withIdentity("jobDetail_1")    
                .storeDurably().build();
    }

    @Bean
    public Trigger myTrigger() {
        return TriggerBuilder.newTrigger()
                .forJob("jobDetail_1")        
                .withIdentity("myTrigger")
                .startNow()
                .withSchedule(CronScheduleBuilder.cronSchedule("0/3 * * 1 * ? *"))    //    cron   ,        ,       
                .build();
    }
}

마지막 으로 실 행 된 방법 을 쓰 면 됩 니 다.Quartz JobBean 을 계승 하고 execute Internal 방법 을 실현 하려 면 execute Internal 방법 에서 스케줄 링 논 리 를 작성 하 십시오.
@Service
@Async
public class TestJob extends QuartzJobBean {
    private final Logger logger = LoggerFactory.getLogger(TestJob.class);
    private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    @Override
    protected void executeInternal(JobExecutionContext context) {
        logger.info("     :" + sdf.format(new Date()));
    }
}

구덩이 밟 기 설명
위의 방법 이 모두 작성 되 고 실행 되 었 지만 작업 이 실행 되 지 않 았 고 콘 솔 도 잘못 보고 되 지 않 았 습 니 다.이 경우 대부분 설정 파일 이 유효 하지 않 습 니 다.제 상황 은 설정 클래스 가 springboot 에 스 캔 되 지 않 았 기 때문에 제 해결 방안 은 다음 과 같 습 니 다.
@EnableAsync
@EnableScheduling
@SpringBootApplication(scanBasePackages = "com.jwss")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

주로 이것 을 더 해서 제 프로젝트 의 모든 코드 를 스 캔 하 게 했 습 니 다.
scanBasePackages = "com.jwss"

좋은 웹페이지 즐겨찾기