2015-10-07 3 views
6

Я использую Spring framework v4.1.7 и имею проблемы с планированием задачи cron, где я хочу определить параметр cron в файле свойств.spring @Scheduled with cron не разрешает свойство

Мой Java-код:

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

и в моих свойствах файла у меня есть invoice.export.cron: 0 0 7 * * MON-FRI?
для включения расписания я есть @EnableScheduling на моем главном классе конфигурации.

Я попытался отладить эту проблему и обнаружил, что выражение cron должно быть разрешено с помощью заполнителя свойства here. после звонков в resolveStringValue приводит меня к this место в AbstractBeanFactory. И насколько я вижу, вот проблема. список this.embeddedValueResolvers пуст ... поэтому он не разрешает свойство i передано @Scheduled(cron).

У кого-нибудь есть идея, если я что-то делаю что-то не так или пропустил что-то здесь?

Заранее благодарен! :)

ответ

7

Вы зарегистрированы PropertySourcesPlaceholderConfigurer?

Специализация PlaceholderConfigurerSupport, устраняющий $ {...} заполнителей в пределах значений свойств определения боба и @value аннотаций против текущей весны окружающей среды и его набора PropertySources.

Я не уверен, если он работает и в @Scheduled, но это стоит попробовать

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

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

Спасибо @Ruben это работает. :) – Dodge

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