1. 태스크
Job: void 실행(JobExecutionContext 컨텍스트) 메소드가 하나만 있는 인터페이스입니다. 개발자는 실행 중인 태스크를 정의하기 위해 이 인터페이스를 구현합니다. JobExecutionContext 클래스는 스케줄링 컨텍스트에 대한 다양한 정보를 제공합니다. Job 런타임 정보는 JobDataMap 인스턴스에 저장됩니다.
2. Trigger
Trigger: Job 실행을 트리거하는 시간 트리거 규칙을 설명하는 클래스입니다. SimpleTrigger와 CronTrigger라는 두 가지 주요 하위 클래스가 있습니다. 한 번만 트리거하거나 고정된 시간 간격으로 실행해야 하는 경우 SimpleTrigger가 가장 적합한 선택이지만 CronTrigger는 Cron 표현식을 통해 매일 아침 9시, 월요일, 수요일, 금요일 오후 5시에 실행 등;
3. 스케줄러
JobDetail: Quartz는 Job을 실행할 때마다 Job 인스턴스를 다시 생성하므로 직접적으로 받아들이지 않습니다. 대신 Job 인스턴스는 Job 구현 클래스를 수신하므로 런타임에 newInstance()의 리플렉션 메커니즘을 통해 Job이 인스턴스화될 수 있습니다. 따라서 Job 구현 클래스를 설명하는 클래스가 필요하며 Job 이름, 설명, 관련 리스너 및 기타 정보와 같은 기타 관련 정적 정보가 이 역할을 맡습니다.
Quartz 작업 생성
1. 기획 엔터티 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | public class Plan {
private String date ;
private String task;
public Plan(String date , String task) {
this. date = date ;
this.task = task;
}
public Plan() {
}
@Override
public String toString() {
return "Plan [date=" + date + ", task=" + task + "]" ;
}
public String getDate () {
return date ;
}
public void setDate(String date ) {
this. date = date ;
}
public String getTask() {
return task;
}
public void setTask(String task) {
this.task = task;
}
}
|
로그인 후 복사
2. 알림 서비스 클래스
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
public class RemindService {
public List<Plan> getPlansForToday(){
List<Plan> list= new ArrayList<Plan>();
Plan p1= new Plan( "2016-11-3" , "呵呵" );
Plan p2= new Plan( "2016-11-4" , "嘿嘿" );
list.add(p1);
list.add(p2);
return list;
}
public void ouputPlan(){
List<Plan> forToday = getPlansForToday();
for (Plan plan : forToday) {
System.out.println( "计划时间" +plan. getDate ()+ "计划内容" +plan.getTask());
}
}
}
|
로그인 후 복사
3. 🎜>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
public class RemindJob implements Job {
private RemindService service= new RemindService();
public void execute(JobExecutionContext arg0) throws JobExecutionException {
service.getPlansForToday();
}
public RemindService getService() {
return service;
}
public void setService(RemindService service) {
this.service = service;
}
}
|
로그인 후 복사
4. 타이머 작업 예약
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public class TestJob {
public static void doRemind() throws SchedulerException, InterruptedException{
JobDetail job =JobBuilder.newJob(RemindJob. class ).withIdentity( "job1" , "group1" ).build();
Trigger trigger=TriggerBuilder.newTrigger().withIdentity( "myTrigger" , "group1" ).
withSchedule(CronScheduleBuilder.cronSchedule( "0 34 16 ? * 5#1 2016" )).build();
SchedulerFactory s= new StdSchedulerFactory();
Scheduler scheduler = s.getScheduler();
scheduler.scheduleJob(job,trigger);
scheduler.start();
}
public static void main(String[] args) throws SchedulerException, InterruptedException {
doRemind();
}
}
|
로그인 후 복사
크론 표현

