Шаблон cron хранится в файле свойств конфигурации. . На самом деле существует два файла свойств: одна конфигурация по умолчанию и одна конфигурация профиля, которая зависит от среды (например, dev, test, prod customer 1, prod customer 2 и т. д.) и переопределяет некоторые значения по умолчанию.
Я настроил bean-заполнитель свойств в контексте Spring, который позволяет мне использовать заполнители в стиле ${} для импорта значений из файлов свойств.
Компоненты заданий выглядят следующим образом:
Код: Выделить всё
@Component
public class ImagesPurgeJob implements Job {
private Logger logger = Logger.getLogger(this.getClass());
@Override
@Transactional(readOnly=true)
@Scheduled(cron = "${jobs.mediafiles.imagesPurgeJob.schedule}")
public void execute() {
//Do something
//can use DAO or other autowired beans here
}
}
Код: Выделить всё
classpath:config/default-config.properties
classpath:config/environment-config.properties
Однако у меня есть еще одно требование: в некоторых случаях некоторые из этих заданий можно полностью отключить.
Итак, прежде чем использовать Spring для управления ими, я создал их вручную, и в файлах конфигурации наряду с параметром cron есть логический параметр, указывающий, нужно ли включать задание или нет:< /p>
Код: Выделить всё
jobs.mediafiles.imagesPurgeJob.enable=true or false
jobs.mediafiles.imagesPurgeJob.schedule=0 0 0/12 * * ?
Очевидным обходным решением было бы определение шаблона cron, который никогда не будет выполняться, поэтому задание никогда не будет выполнено. Но компонент все равно будет создан, а конфигурация будет немного неясной, поэтому я считаю, что должно быть лучшее решение.
Подробнее здесь: https://stackoverflow.com/questions/184 ... -in-spring