2016-04-04 2 views
4

Мое приложение загружает некоторые шаблоны cron из файла свойств. Im используя @Scheduled аннотацию, как это:Cron scheduler «disable pattern»

@Scheduled(cron = "${config.cronExpression:0 0 11,23 * * *}")

Теперь я хочу, чтобы отключить некоторые задачи и самое простое решение было бы ввести хрон шаблон которым никогда не будет работать. Чтобы сделать это, я подумал об использовании выражения cron, которое выполняется только в определенный день в прошлом. Но, к сожалению, выражения Spring cron не позволяют добавить год или дату в прошлом.

Есть ли какой-либо узор, который никогда не будет работать?

+1

Я не уверен, что это помогает, но я знаю, что мы локально используем cron-expression 'none' успешно. Но это может быть взлом ... Другие люди предлагают использовать 31 февраля или 31 декабря 2099 года ... http://stackoverflow.com/questions/8324306/cron-job-that-will-never-execute http: // stackoverflow.com/questions/13835221/quartz-cron-expression-that-will-never-execute/13938099#13938099 – samjaf

ответ

0

Весенний ботинок использует @Profile в методе весны Боба для отключения запланированного задания.

@Service 
public class ... { 

    @Profile("prod") 
    @Scheduled(cron="${scheduler.cron}") 
    public void yourJob() { 
     // ... job enabled only for PROD environment 
    } 

} 

См. https://jira.spring.io/browse/SPR-10376.

+0

Вы уверены, что это работает? В [документации] (https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/Profile.html) говорится, что '@ Профиль' может применяться только к' @ Bean' методы. У меня не было времени попробовать. – eztam

+0

Да, использование '@ Profile' означает использование его в Spring Bean, то есть' @ Service', '@ Component'. –