2015-10-07 9 views
6

Utilizzo il framework spring v4.1.7 e ho problemi nella pianificazione di un'attività cron in cui voglio definire il parametro cron in un file di proprietà.spring @Scheduled con cron non risolve la proprietà

Il mio codice Java:

@Scheduled(cron = "${invoice.export.cron}") 
private void scheduledExport() { 
    // ... the code to execute ... 
} 

e nei miei file di proprietà ho invoice.export.cron: 0 0 7 * * MON-FRI?
per attivare la programmazione ho @EnableScheduling sulla mia classe di configurazione principale.

Ho provato a eseguire il debug in questo problema e ho scoperto che l'espressione cron deve essere risolta dal segnaposto della proprietà here. seguendo le chiamate su resolveStringValue mi porta nella posizione this in AbstractBeanFactory. E per quanto posso vedere, ecco il problema. l'elenco this.embeddedValueResolvers è vuoto ... pertanto non risolve la proprietà passata a @Scheduled(cron).

qualcuno ha un'idea se sto facendo qualcosa di sbagliato o manca qualcosa qui?

Grazie in anticipo! :)

risposta

7

Hai registrato un PropertySourcesPlaceholderConfigurer?

Specializzazione di PlaceholderConfigurerSupport che risolve $ {...} segnaposto entro i valori delle proprietà di definizione di fagioli e @value annotazioni contro l'attuale primavera Ambiente e la sua serie di PropertySources.

non sono sicuro se funziona anche in @Scheduled, ma vale la pena provare

@Configuration 
@PropertySource("classpath:whatever.properties") 
public class PropertiesWithJavaConfig { 

    @Bean 
    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() { 
     return new PropertySourcesPlaceholderConfigurer(); 
    } 
} 
+0

Grazie @Ruben questo funziona. :) – Dodge

Problemi correlati