2013-11-07 3 views
5

Я знаю, как планировать задачи в контексте пружинного:Как запланировать задачу в Java коде

<task:scheduler id="taskScheduler" pool-size="1" /> 
    <task:scheduled-tasks scheduler="taskScheduler"> 
    <task:scheduled ref="jobWatcher" method="run" cron="*/10 * * * * ?" /> 
    </task:scheduled-tasks> 

Но хроны моей задачи можно с помощью сконфигурированы во время выполнения, поэтому мне нужно создать задачу в 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"));

  • scheduler является экземпляром TaskScheduler
  • task является Runnable

    Runnable exampleRunnable = new Runnable(){ 
    
        @Override 
        public void run() { 
         //To change body of implemented methods 
        } 
    }; 
    
+1

Я до сих пор не знаю, как вы создания экземпляр планировщика. U просто напишите здесь интерфейс – hudi

+0

@hudi жаль, что вы груб, но то, что я написал, было 3 абзаца выше вашей ссылки, поэтому попробуйте прочитать немного больше, и, возможно, вам нужно начать с java-основы. – RamonBoza

+0

Я думаю, что вы не понимаете мой вопрос. Вы публикуете здесь только интерфейс. Мне нужен какой-то экземпляр, который реализует этот интерфейс – hudi

1

В отличие от конфигурации конфигурации XML или аннотации (где вы можете напрямую указать метод управляемого компонентом Spring), вам необходимо создать свой собственный , который вызовет ваш метод.

Допустит, вы имеете следующий управляемый компонент:

@Component 
public class SchedulingBean{ 
    public void doSomethingPeriodically(){ 
    } 
} 

и вы хотите запустить метод внутри на динамические хронах, у вас есть (по крайней мере) три варианта:

Пусть SchedulingBean реализовать Runnable и вызовите метод doSomehtingPeriodically от метода выполнения

@Component 
public class SchedulingBean implements Runnable{ 
    public void doSomethingPeriodically(){ 
} 
@Override 
public void run(){ 
    doSomethingPeriodically(); 
    } 
} 

Создать новый (может быть анонимным) Runnable экземпляр, который вызывает метод из управляемого управляемого компонента. Это может быть немного сложнее, так как вам нужно будет получить ссылку на этот компонент из контекста Spring.

Или создать новый (возможно, анонимный) Runnable экземпляр, который реализует непосредственно необходимую функциональность, без использования управляемого компонента:

public class SchedulingBean implements Runnable{ 
    public void doSomethingPeriodically(){ 
    } 
    @Override 
    public void run(){ 
     doSomethingPeriodically(); 
    } 
} 

(обратите внимание на отсутствие @Component)

Смежные вопросы