[SPRING] 자바 코드에서 작업을 예약하는 방법
SPRING자바 코드에서 작업을 예약하는 방법
나는 봄 환경에서 작업을 스케줄하는 방법을 안다.
<task:scheduler id="taskScheduler" pool-size="1" />
<task:scheduled-tasks scheduler="taskScheduler">
<task:scheduled ref="jobWatcher" method="run" cron="*/10 * * * * ?" />
</task:scheduled-tasks>
하지만 내 작업의 cron은 런타임 중에 구성 할 수 있으므로 Java 코드로 작업을 생성해야합니다. 스프링 문서 : http://docs.spring.io/spring/docs/3.0.x/reference/scheduling.html은 다음과 같습니다.
scheduler.schedule(task, new CronTrigger("* 15 9-17 * * MON-FRI"));
이것이 내가 원하는 것이지만이 예제에서 스케줄러를 만드는 방법과 그의 클래스가 무엇인지 전혀 알지 못합니다. 도와주세요
해결법
-
==============================
1.귀하의 링크에서 단 세 단락
귀하의 링크에서 단 세 단락
public interface TaskScheduler { ScheduledFuture schedule(Runnable task, Trigger trigger); ScheduledFuture schedule(Runnable task, Date startTime); ScheduledFuture scheduleAtFixedRate(Runnable task, Date startTime, long period); ScheduledFuture scheduleAtFixedRate(Runnable task, long period); ScheduledFuture scheduleWithFixedDelay(Runnable task, Date startTime, long delay); ScheduledFuture scheduleWithFixedDelay(Runnable task, long delay); }
그래서 scheduler.schedule (task, new CronTrigger ( "* 15 9-17 * MON-FRI"));
-
==============================
2.XML 설정이나 주석 설정 (Spring 관리 빈의 메소드를 직접 지정할 수있는)과는 달리, 메소드를 호출 할 자신 만의 Runnable을 생성해야한다.
XML 설정이나 주석 설정 (Spring 관리 빈의 메소드를 직접 지정할 수있는)과는 달리, 메소드를 호출 할 자신 만의 Runnable을 생성해야한다.
다음 관리 Bean이 있다고 가정 해보십시오.
@Component public class SchedulingBean{ public void doSomethingPeriodically(){ } }
동적 cron에서 내부적으로이 메소드를 실행하려면 (적어도) 세 가지 옵션이 있습니다.
SchedulingBean이 Runnable을 구현하고 run 메소드에서 doSomehtingPeriodically 메소드를 호출하도록합니다.
@Component public class SchedulingBean implements Runnable{ public void doSomethingPeriodically(){ } @Override public void run(){ doSomethingPeriodically(); } }
관리 대상 Bean에서 메소드를 호출하는 새 (아마 익명) Runnable 인스턴스를 작성하십시오. 봄 컨텍스트에서 해당 빈에 대한 참조를 가져와야하기 때문에 좀 더 까다로울 수 있습니다.
또는 관리 빈을 사용하지 않고 필요한 기능을 직접 구현하는 새로운 (아마도 익명의) Runnable 인스턴스를 생성하십시오.
public class SchedulingBean implements Runnable{ public void doSomethingPeriodically(){ } @Override public void run(){ doSomethingPeriodically(); } }
(누락 된 @Component 참고)
from https://stackoverflow.com/questions/19833279/how-to-schedule-task-in-java-code by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 포트 80에서 스프링 부트가 시작되지 않음 (0) | 2019.05.10 |
---|---|
[SPRING] 봄 보안 및 Thymeleaf가 작동하지 않음 (0) | 2019.05.10 |
[SPRING] 봄 애플 리케이션 개체에 속성을 찾을 수 없습니다 (0) | 2019.05.10 |
[SPRING] 인터페이스의 사용자 정의 주석에 대한 구성 요소 스캔 (0) | 2019.05.10 |
[SPRING] org.hibernate.PersistentObjectException : 메모리 데이터베이스에 H2로 지속되도록 전달 된 분리 된 엔티티 (0) | 2019.05.10 |