Статьи

Интеграция Spring и Obsidian Scheduler

Использование  Spring Framework  вошло в большой процент проектов Java всех видов. Она вышла далеко за рамки внедрения зависимостей до большого взаимосвязанного технологического стека, обеспечивающего «водопровод» в большом количестве областей. Поскольку это часто является частью нашей жизни, мы обсудим поддержку Spring в Obsidian и как быстро интегрировать использование Spring в Obsidian Scheduler.

Версия безразличная

Во-первых, Obsidian не включает библиотеки Spring и не зависит от Spring для запуска. Учитывая, что Spring является очень активным проектом и имеет частые выпуски, а иногда проекты имеют ограничения, которые требуют использования более старых версий определенных библиотек, мы решили, что было бы лучше, если бы Obsidian просто работал с любой версией Spring, которую вы используете. Obsidian поддерживает версии 2.5 и новее Spring.

Настройка компонентов работы

Первый шаг в интеграции Obsidian Scheduler часто уже реализован в вашем проекте. Obsidian ожидает найти  @Component аннотации или любые Spring или пользовательские расширения этих аннотаций (например,  @Service и  @Repository) в ваших классах заданий. Если вы используете эти аннотации для связи между вашими классами, вам, скорее всего, не нужно ничего делать, чтобы выполнить этот шаг. Если вы не используете эти аннотации для связи ваших классов, вам нужно будет добавить аннотацию, которая будет служить  маркером  для обсидиана. Если у вас есть несколько экземпляров данного класса бинов в контексте Spring, Obsidian нужно знать, как уникальным образом идентифицировать задание в контексте Spring. В этих случаях используйте  value="" в аннотации имя бина. Например:

@Component("mySpringComponent")
public class SpringComponent implements SchedulableJob {

Предоставление весеннего контекста для обсидиана

Следующий шаг — дать Obsidian знать о вашем контексте Spring. В комплект Obsidian входит реализация  ApplicationContextAware. Если вы используете сканирование пути к классам в Spring, вы можете просто добавить пакет Obsidian в вашу конфигурацию. Вот образец:

<context:component-scan base-package="com.my.package, com.carfey.ops.job.di"/>

Если вы явно подключаетесь к XML-файлу конфигурации, вот пример конфигурации:

<bean id="obsidianAware" class="com.carfey.ops.job.di.SpringContextAware"/>

Параметры запуска и завершения работы

Третий шаг, который является необязательным и зависит от вашего желаемого использования, относится к запуску и остановке Obsidian. Если вы настраиваете интеграцию Spring для использования в автономном приложении веб-администрирования Obsidian (без запущенного планировщика), вы не включили бы эту конфигурацию. Во всех других случаях, таких как встроенный планировщик или приложение веб-администрирования со встроенным планировщиком, вы можете использовать этот пример:

<bean id="obsidianStarter" class="com.carfey.ops.job.di.SpringSchedulerStarter"/>

Этот bean-компонент следует подключать как можно позже при запуске контекста Spring, используя  зависимости  или другие подходящие стратегии. Этот класс не имеет  @Component аннотации, так как он не может быть автоматически подключен через сканирование пути к классам Spring.

Теперь ваш список «Добавить / редактировать работу» в пользовательском интерфейсе веб-администрирования будет включать все реализации, com.carfey.ops.job.SchedulableJob которые вы подключили через Spring. Если вы используете Spring 3.0 или новее, даже задания, которые используют аннотации Obsidian com.carfey.ops.job.SchedulableJob.Schedulable и com.carfey.ops.job.SchedulableJob.ScheduledRun включены. Смотрите нашу вики для получения дополнительной информации о реализации заданий с использованием  интерфейса  или  аннотаций .

Хорошо пойти!

Теперь у вас есть полная интеграция Spring с Obsidian. Все экземпляры заданий, загруженные с помощью аннотаций Spring, будут загружаться из контейнера Spring при выполнении проверки и выполнения. Обратите внимание, что это могут быть либо прототипы, либо синглтоны в соответствии с вашими потребностями, хотя мы рекомендуем прототипы, если у вас есть какое-либо внутреннее состояние в работе.

Конечно, Spring — не единственная структура внедрения зависимостей, доступная в Java. На дорожной карте для Obsidian есть аналогичная интеграция с  Google GuiceОставайтесь с нами ! Получить  в контакт  с нами , если у вас есть какие — либо вопросы по интеграции Spring или любые другие особенности Obsidian планировщика.