Как пользовательский стартер Spring Boot настраивает аннотации автоконфигурации

Spring Boot

Эта статья была впервые опубликована на моем личном сайте:Как пользовательский стартер Spring Boot настраивает аннотации автоконфигурации

существуетНастройка собственного стартера в Spring BootВ конце статьи упоминается, что есть два способа запустить процесс настройки Spring Boot:

  1. Spring.Factorory: TheТриггер загрузки SpringОбнаружение классов в каталоге пути к классам для автоматической настройки;
  2. @Enable*: иногда требуется стартеромПользовательский триггерПроцесс поиска файла автоматической конфигурации.

настоящий бой

  • По примеру предыдущей статьи сначалаspring.factoriesЗакомментируйте содержимое в
#org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
#com.test.bookpubstarter.dbcount.DbCountAutoConfiguration
  • Создайте мета-аннотацию, то есть создайте новый файл EnableDbCounting.java в каталоге db-count-starter/src/main/java/org/test/bookpubstarter/dbcount.
package com.test.bookpubstarter.dbcount;

import org.springframework.context.annotation.Import;
import java.lang.annotation.*;

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(DbCountAutoConfiguration.class)
@Documented
public @interface EnableDbCounting {
}
  • Удалите компонент spring bean-компонента DbCountRunner, созданный вручную в классе приложения BookPub, а затем украсьте класс BookPubApplication аннотацией *@EnableDbCounting*.
package com.test.bookpub;

import com.test.bookpubstarter.dbcount.EnableDbCounting;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableDbCounting
public class BookPubApplication {
    public static void main(String[] args) {
        SpringApplication.run(BookPubApplication.class, args);
    }
}
  • Запустите приложение и установите уровень журнала DEBUG.

由starter的用户手动触发配置

Видно, что наши собственные определенные аннотации работают. Если нет spring.factories, то механизм автоконфигурации Spring Boot не будет пытаться решить проблему при запуске программы.DbCountAutoConfigurationДобрый. Вообще говоря, область действия аннотации @Component находится в каталоге, где находится BookPubApplication, а каждый подкаталог, а именно com.test.bookpub.* и DbCountAutoConfiguration, находится в каталоге org.test.bookpubstarter.dbcount, поэтому он не будет отсканировано. .

@EnableDbCountingАннотация находит соответствующий класс конфигурации через *@Import(DbCountAutoConfiguration.class)*, поэтому, изменяя BookPubApplication с помощью @EnableDbCounting, она сообщает Spring Boot добавить DbCountAutoConfiguration в контекст приложения во время запуска.

Весенняя загрузка серии 1.x

  1. Автоматическая настройка Spring Boot, Command-line-Runner
  2. Понимание автоматической настройки Spring Boot
  3. Использование аннотации Spring Boot @PropertySource при интеграции Redis
  4. Как настроить преобразователи HTTP-сообщений в проектах Spring Boot
  5. Spring Boot интегрирует Mongodb для обеспечения интерфейса Restful.
  6. Весенний фасоль
  7. Использование шаблона диспетчера событий в проекте Spring Boot
  8. Методы обработки ошибок, когда Spring Boot предоставляет интерфейсы RESTful
  9. Настройка собственного стартера в Spring Boot
  10. Как проекты Spring Boot поддерживают протоколы HTTP и HTTPS

В этом выпуске основное внимание уделяется таким темам, как серверные технологии, устранение неполадок и оптимизация JVM, вопросы на собеседованиях по Java, личностный рост и самоуправление, а читателям предлагается опыт работы и роста передовых разработчиков. .

javaadu