Spring Boot: создание собственной автоконфигурации

Если вы работаете в компании, которая разрабатывает общие библиотеки, или если вы работаете с открытой или коммерческой библиотекой, вы можете разработать собственную автоконфигурацию. Классы автоконфигурации могут быть объединены во внешние jar-файлы и по-прежнему поддерживаться Spring Boot.

Автоконфигурирование может быть связано со стартером, который предоставляет код автоконфигурации, а также типичные библиотеки, которые вы будете использовать с ним.

Понимание автоматически настроенных компонентов

Под капотом автоконфигурация реализована с помощью стандартных классов @Configuration. Дополнительные аннотации @Conditional используются для ограничения необходимости применения автоконфигурации. Обычно классы автоконфигурации используют аннотации @ConditionalOnClass и @ConditionalOnMissingBean. Это гарантирует, что автоконфигурация применяется только тогда, когда соответствующие классы найдены и когда вы не объявили свою собственную @Configuration.

Поиск автоконфигурации кандидатов

Spring Boot проверяет наличие файла META-INF/spring.factories в вашем опубликованном jar-файле. Файл должен перечислить ваши классы конфигурации в ключе EnableAutoConfiguration, как показано в следующем примере:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.mycorp.libx.autoconfigure.LibXAutoConfiguration,\
com.mycorp.libx.autoconfigure.LibXWebAutoConfiguration

Автоконфигурации должны быть загружены только таким способом. Убедитесь, что они определены в определенном пространстве пакета и что они никогда не являются целью сканирования компонентов. Кроме того, классы автоконфигурации не должны включать сканирование компонентов для поиска дополнительных компонентов. Вместо этого следует использовать определенные @Import'ы.

Вы можете использовать аннотации @AutoConfigureAfter или @AutoConfigureBefore, если ваша конфигурация должна применяться в определенном порядке. Например, если вы предоставляете веб-конфигурацию, ваш класс может потребоваться применить после WebMvcAutoConfiguration.

Если вы хотите заказать определенные автоконфигурации, которые не должны иметь непосредственного знания друг о друге, вы также можете использовать @AutoConfigureOrder. Эта аннотация имеет ту же семантику, что и обычная аннотация @Order, но предоставляет специальный порядок для классов автоконфигурации.


Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки