Как избежать настройки внешней библиотеки другой библиотекой с помощью Spring Boot

Предположим, у меня есть два загрузочных проекта Spring. Первый проект - это просто вспомогательная библиотека, предоставляющая различные функции. Вторым является "основной" проект (первичная библиотека), в котором используется вспомогательный проект (jar).

Вспомогательная библиотека имеет несколько служб, которые должны быть автоматически подключены основным проектом.

Как настроить вспомогательную библиотеку, чтобы основная библиотека не выполняла никаких настроек для вспомогательной библиотеки. По сути, я говорю о компонентном сканировании.

До сих пор я читал, что первичная библиотека должна включать пакеты вспомогательной библиотеки в сканирование компонентов. Это правда? Я надеюсь, что нет, потому что, по моему мнению, вспомогательная библиотека должна выполнять все свои конфигурации самостоятельно, а другая библиотека (или проект), просто использующая эту вспомогательную библиотеку, не должна иметь дело с конфигурацией вспомогательной библиотеки.

По сути, мне интересно, если это возможно, что вспомогательная библиотека настраивает себя через @Configuration аннотации или тому подобное (или @SpringBootApplication) так что другая библиотека не должна иметь дело со всеми этими деталями другой библиотеки. Я действительно надеюсь, что это работает как-то, потому что я думаю, что какая-то крайне запутанная задача состоит в том, что другая библиотека должна выполнить работу по поддержке своей библиотеки в отношении их конфигурации.

2 ответа

Вам нужно добавить зависимость spring-boot-configuration-processor в вашем проекте, как @M. Дейн упоминается. Вот ссылка на рабочий пример. Тем не менее, я не нашел способ иметь несколько бинов при использовании этого метода.

Другой способ сделать это показан в этом ответе о переполнении стека.

Хорошо, я только нашел решение самостоятельно.

Хитрость заключается в следующем.

В проекте поддержки есть класс конфигурации (тот, который у меня уже был, но он не был учтен). Класс конфигурации вспомогательной библиотеки в основном выглядит следующим образом:

@SpringBootApplication
public class SupportLibApplication {
}

Основной проект также имеет класс конфигурации. Хитрость заключается в том, чтобы включить в класс конфигурации основного проекта класс конфигурации поддерживающего класса. Это была моя недостающая ссылка. Класс конфигурации основного проекта теперь выглядит так:

@SpringBootApplication
@Import({SupportLibApplication.class})
public class QuestApplication extends WebMvcConfigurerAdapter {
…
}
Другие вопросы по тегам