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, но предоставляет специальный порядок для классов автоконфигурации.
Читайте также:
- Spring Boot: планировщик Quartz
- Spring Boot: поддерживаемые поставщики кэша
- Spring Boot: поставщики кэша, Generic, JCache, Infinispan
Комментарии
Отправить комментарий