2011-01-27 48 views
13

Ho un problema con l'annotazione compito basato scheduler di primavera - non riesco a farlo funzionare, non vedo alcun problema qui ...Primavera Scheduler non funziona

applicazione context.xml

<task:scheduler id="taskScheduler" /> 
<task:executor id="taskExecutor" pool-size="1" /> 
<task:annotation-driven executor="taskExecutor" scheduler="taskScheduler" /> 

fagioli

@Service 
public final class SchedulingTest { 

    private static final Logger logger = Logger.getLogger(SchedulingTest.class); 

    @Scheduled(fixedRate = 1000) 
    public void test() { 
     logger.debug(">>> Scheduled test service <<<"); 
    } 

} 
+0

Non ricevo errori e mi aspetto di accedere al messaggio di servizio >>>> Servizio di test programmato <<< 'che non succede ... – user219882

+1

il tuo logger è configurato correttamente, con il livello di registro corretto? –

risposta

21

Se si desidera utilizzare l'approccio task:annotation-driven e l'annotazione @Scheduled non funziona, probabilmente si è perso lo context:component-scan nel proprio contesto xml. Senza questa linea, molla non può indovinare dove cercare le tue annotazioni.

<context:component-scan base-package="..." /> 
+1

Mi hai salvato la vita Serkan Arikusu! Pollice su! – TchiYuan

3

ho finalmente trovato una soluzione.

applicazione context.xml

<bean id="schedulingTest" class="...SchedulingTest" /> 

<task:scheduled-tasks> 
    <task:scheduled ref="schedulingTest" method="test" cron="* * * * * ?"/> 
</task:scheduled-tasks> 

e il metodo test() senza l'annotazione. Questo esegue il metodo ogni secondo e funziona perfettamente.

+1

Funziona sicuramente da quando è stato abbandonato l'approccio 'task: annotation-driven'. Tu guardi l'altra risposta per la linea mancante. Saluti –

1

Si dovrebbe anche controllare lazy-init di essere falsa per quella di fagioli o di utilizzare default-lazy-init="false" in grani.

Questo ha risolto il mio problema.

22

Spring @Configuration (non-xml configuration) for annotation-driven tasks

Basta aggiungere @EnableScheduling su di voi classe WebMvcConfig

@Configuration 
@EnableWebMvc 
@EnableAsync 
@EnableScheduling 
public class WebMvcConfig extends WebMvcConfigurerAdapter { 
    /** Annotations config Stuff ... **/ 
} 
+0

aggiungendo @EnableScheduling ho risparmiato molto tempo. Grazie mille –

0

Questo sta accadendo, perché entro la primavera di default pigri inizializza i fagioli.

Disabilitare l'inizializzazione pigra per il bean ponendo questa annotazione

@Lazy(false) 

in cima alla vostra @Component.

0

Avevamo il seguente motivo: Servizio necessario un'interfaccia (a causa dell'annotazione della transazione) - IDE ha aggiunto questa annotazione tx anche all'interfaccia. Ma @Scheduled stava implementando la classe di servizio - e Spring lo ignorò poiché pensava che sull'interfaccia esistessero solo annotazioni. Quindi fai attenzione ad avere solo annotazioni sull'implementazione delle classi!

Problemi correlati