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"