Last updated
Last updated
는 거의 모든 Java 응용 프로그램에 통합 할 수 있는 풍부한 기능의 오픈 소스 작업 스케줄 라이브러리입니다.
[스프링에서 Unix의 Cron 처럼 특정시간 혹은 몇분 혹은 몇시간마다 동작해는 스케쥴러를 구현해야 했다.
그래서 찾아보게 된게 Spring + Quartz Scheduler 조합의 활용이었다.
하지만 Spring 3.1 버전 부터는 Quartz Scheduler를 사용하지 않고도 Scheduler를 통한 Job을 실행할 수 있게 되었다.]
출처: http://javafactory.tistory.com/1386 [FreeLife의 저장소]
위와 같은 글을 보았습니다. 위 말 처럼 우리는 이미 Spring Framework
안에서 @Scheduled
를 통해 과거 Quartz 에서 제공해주었던 cron schedule
기능 등을 사용하고 있는 것 입니다.
Spring Boot는 spring-boot-starter-quartz
"Starter"를 포함하여 를 사용하기위한 몇 가지 편의를 제공합니다. Quartz가 사용 가능하다면, Scheduler
가 자동으로 구성 됩니다.( SchedulerFactoryBean
추상화를 통해)
다음 유형의 BEan은 자동으로 선택되어 Scheduler
와 연관됩니다.
JobDetail
: 특정 작업을 정의합니다. JobDetail
인스턴스는 JobBuilder
API 로 빌드 될 수 있습니다 .
Calendar
.
Trigger
: 특정 작업이 트리거되는시기를 정의합니다.
기본적으로 인 메모리 JobStore
가 사용됩니다. 그러나 응용 프로그램에서 DataSource
bean을 사용할 수 있고 다음 예제와 같이 spring.quartz.job-store-type
속성이 적절 하게 구성된 경우 JDBC 기반 저장소를 구성 할 수 있습니다 .
JDBC 저장소를 사용하면 다음 예와 같이 시작할 때 스키마를 초기화 할 수 있습니다.
Quartz가 애플리케이션의 main DataSource
가 아닌 다른 DataSource
을 사용하게하려면 , DataSource
bean을 선언하고 , 그 @Bean
메소드에 @QuartzDataSource
주석을 달아라. 이렇게하면 Quartz 특정 DataSource
가 SchedulerFactoryBean
및 스키마 초기화에 모두 사용됩니다.
기본적으로 구성으로 생성 된 작업은 영구 작업 저장소에서 읽은 이미 등록 된 작업을 덮어 쓰지 않습니다. 기존 작업 정의를 덮어 쓰려면 해당 spring.quartz.overwrite-existing-jobs
속성을 설정하십시오 .
Quartz Scheduler 설정은 프로그래밍 방식의 커스터마이즈가 가능한 spring.quartz
속성과 SchedulerFactoryBeanCustomizer
빈을 사용하여 SchedulerFactoryBean
을 사용자 정의 할 수 있습니다. advanced Quartz 구성 속성은 spring.quartz.properties.*
을 사용하여 사용자 정의 할 수 있습니다 .
Jobs은 데이터 맵 속성을 삽입하는 setter를 정의 할 수 있습니다. 다음 예제와 같이 일반 bean도 유사한 식으로 주입 할 수 있습니다.
기본적으로 Quartz 라이브러리와 함께 제공되는 표준 스크립트를 사용하여 데이터베이스를 검색하고 초기화합니다. 이 스크립트는 기존 테이블을 삭제하고 다시 시작할 때마다 모든 트리거를 삭제합니다. 또한 spring.quartz.jdbc.schema
속성 을 설정하여 사용자 정의 스크립트를 제공 할 수도 있습니다 .
특히, Quartz는 스케줄러를 spring.quartz.properties
통해 구성 할 수있는 방법을 제공하므로 Executor
Bean은 스케줄러와 연관되지 않는다. 태스크 실행 프로그램을 사용자 정의해야하는 경우 SchedulerFactoryBeanCustomizer
구현을 고려하십시오.