Как условно включить или отключить запланированные задания в Spring?JAVA

Программисты JAVA общаются здесь
Anonymous
Как условно включить или отключить запланированные задания в Spring?

Сообщение Anonymous »

Я определяю запланированные задания с помощью шаблонов стиля cron в Spring, используя аннотацию @Scheduled.

Шаблон 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
}
}
Соответствующие части моего контекстного XML:

Код: Выделить всё







classpath:config/default-config.properties
classpath:config/environment-config.properties





Мне это очень нравится. Это довольно просто и понятно, с минимальным количеством XML.

Однако у меня есть еще одно требование: в некоторых случаях некоторые из этих заданий можно полностью отключить.

Итак, прежде чем использовать Spring для управления ими, я создал их вручную, и в файлах конфигурации наряду с параметром cron есть логический параметр, указывающий, нужно ли включать задание или нет:< /p>

Код: Выделить всё

jobs.mediafiles.imagesPurgeJob.enable=true or false
jobs.mediafiles.imagesPurgeJob.schedule=0 0 0/12 * * ?
Как я могу использовать этот параметр в Spring для условного создания или просто игнорирования компонента в зависимости от этого параметра конфигурации?

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

Подробнее здесь: https://stackoverflow.com/questions/184 ... -in-spring

Вернуться в «JAVA»