2011-12-29 2 views
0

Я хотел бы установить весну для запуска метода каждые n секунд. Но при этом, п может быть изменен во время работыКак использовать Spring @Autowire для настройки TaskScheduler для запуска метода с переменной n секунд?

Метод пнуть: PingInvoker.ping()

public class PingInvoker 
{ 
    public void ping() 
    { 
    List<Server> svr = Manager.getList(); 

    for (Server i : svr) 
     i.ping(); 
    } 
} 

Контекст Применение:

???

+0

Почему вы не хотите использовать класс Timer из JavaSE для этих целей? – maks

+0

Мне нужна Spring, чтобы справиться с этим для целей сервера – stackoverflow

+1

Если вы развертываете одноэлементный компонент, который не ленив и имеет материал Timer в конструкторе, он будет делать то, что вы хотите – maks

ответ

1
class PingInvoker { 

    public PingInvoker() { 
     // TODO Auto-generated constructor stub 
     Timer timer = new Timer(); 
     timer.schedule(new Mytask(), 0, period); 
    } 

    public void ping() { 
     List<Server> svr = Manager.getList(); 

     for (Server i : svr) 
     i.ping(); 
    } 

    static class MyTask extends TimerTask { 
     @Override 
     public void run() { 
      ping(); 
     } 
    } 

}

Вы должны развернуть PingInvoker в одноплодном боб и указать такие period, как вы хотите