Spring - несколько конфигураций и порядок @CompontentScan - PullRequest
0 голосов
/ 07 июня 2019

У меня есть несколько классов Spring @Configuration, которые определяют бины.Основной класс, в котором я запускаю приложение, имеет @SpringBootApplication(scanBasePackageClasses = BasePackage.class).

Мой вопрос, каков порядок сканирования этих компонентов и создания бинов?

@SpringBootApplication(scanBasePackageClasses = BasePackage.class)
public class MyApplication {

    public static void main(final String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

И конфигурации

@Configuration
class Config1{
    // defines beans
}

@Configuration
class Config2{
    // defines beans
}

Другая зависимость maven также имеет Config3

@Configuration
class Config3{
    // defines beans
}

Я пытался найти документацию, но не нашел, в каком порядке эти компоненты сканируются и инициализируются.

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/annotation/ComponentScan.html

https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/condition/ConditionalOnMissingBean.html

https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/autoconfigure/EnableAutoConfiguration.html

Обновление

Я задал этот вопрос, потому что у меня есть бин с @ConditionalOnMissingBean и несколько конфигураций, которыеопределить это.Где находится в официальной документации заявление, в каком порядке @Configuration классы отсканированы.

1 Ответ

0 голосов
/ 07 июня 2019

На первом шаге Spring сканирует все классы относительно вашего базового пакета для bean-компонентов.Тогда весна создаст бобы и введет это.

Если вам нужно создать бины в определенном порядке, вы можете сделать это, добавив @DependsOn

Из документов:

Атрибут зависимости отможет явно принудительно инициализировать один или несколько bean-компонентов перед инициализацией bean-компонента, использующего этот элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...