Spring Boot игнорирует все неиспользуемые компоненты / beans? - PullRequest
1 голос
/ 04 августа 2020

У меня есть пружина @Component, которая имеет различные реализации. Я указываю, какую реализацию хочу использовать с аннотацией @Qualifier, и ссылаюсь на bean-компонент по имени. У меня проблема в том, что каждая реализация ссылается на разные значения конфигурации, введенные с помощью аннотации @Value. Поэтому, когда я запускаю 1 реализацию, я буду использовать эти значения конфигурации и исключить остальные 3+ значения конфигурации c, указанные в реализации, в моем файле конфигурации. Когда я пытаюсь запустить его без установки этих значений, я получаю сообщение об ошибке:

Исключение, обнаруженное во время инициализации контекста - отмена попытки refre sh: org.springframework.beans.factory.BeanCreationException: Ошибка создания bean с именем 'xxx': не удалось ввести автоматические зависимости; вложенное исключение: java .lang.IllegalArgumentException: не удалось разрешить заполнитель «xx» в значении «$ {xx}»

Я видел, что могу вручную исключить каждый bean-компонент из сканирования и загрузки как я делаю сейчас:

@SpringBootApplication
@EnableScheduling
@ComponentScan(excludeFilters = {
        @ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = {MyClassImpl1.class, MyClassImpl2.class})})
public class Application {

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

}

, но есть ли способ, которым Spring может игнорировать загрузку всего, что не используется, без явного перечисления? Я спрашиваю, потому что, если мой проект станет больше, у меня может быть много реализаций различных компонентов / служб, которые в данный момент не используются, и я бы предпочел не вести очень длинный список всего неиспользуемого.

...