2010-12-21 18 views
7

Necesito crear tareas sobre la marcha en mi aplicación. ¿Cómo puedo hacer eso? Puedo obtener el programador con la anotación @autowired, pero el planificador toma los objetos Runnable. Necesito darles objetos Spring, para que mis tareas también puedan usar la anotación @autowired.¿Crear la tarea Spring Framework programmatically?

@Autowired private TaskScheduler taskScheduler; 

Respuesta

16

sólo tiene que envolver el objeto de destino en un Runnable, y lo presentarán:

private Target target; // this is a Spring bean of some kind 
@Autowired private TaskScheduler taskScheduler; 

public void scheduleSomething() { 
    Runnable task = new Runnable() { 
     public void run() { 
      target.doTheWork(); 
     } 
    }; 
    taskScheduler.scheduleWithFixedDelay(task, delay); 
} 
+0

no puedo acceder objetivo en ese contexto. Eclipse dice error de sytnax. – newbie

+1

@newbie: Sí, te estaba dando la idea general, no el código de trabajo. – skaffman

+0

problema, agregué implementa Runnable a mi clase de tarea (también conocido como target) – newbie

Cuestiones relacionadas