Приложение Spring Boot Multi Module с @SpringBootConfiguration
У меня есть приложение maven multi module со структурой:
-parent_project
-actual_project
-jpaBase
Родительский проект является Maven агрегацией проектов: actual_project и jpaBase (оба приложения spring boot)
JpaBase-это зависимость actual_project.
Теперь, когда я делаю пакет mvn, я получаю ошибку модульного теста:
Найдено несколько аннотированных классов @SpringBootConfiguration
Потому что и jpaBase, и actual_project имеют классы с аннотациями @SpringBootConfiguration.
Как я могу убедиться, что Spring рассматривает класс SpringBootConfiguration только actual_project, а не jpaBase.
Спасибо!
2 ответов:
Из весенней документации:
Приложение должно включать только один @SpringBootConfiguration и большинство идиоматических приложений Spring Boot унаследуют его от @SpringBootApplication.
Ты сказал:
Потому что и jpaBase, и actual_project имеют классы с аннотациями @SpringBootConfiguration.
Этого не должно быть. Эта аннотация должна быть использована один раз приложением. Итак, только actual_project и parent_project какие приложения Spring Boot должны объявить эту аннотацию.
@SpringBootConfigurationзаменяет объявление этих аннотаций:@Configuration,@EnableAutoConfigurationи еще@ComponentScanУ вас есть информация в официальной документации.
Итак, в вашем проекте jpaBase вы можете заменить
@SpringBootConfigurationобъявлением этих трех аннотаций:@Configuration @EnableAutoConfiguration @ComponentScan({ "yourPackage" }) public class JpaConfig { .... }
На самом деле, для любого, кто смотрит на это,
SpringBootConfigurationзаменяет только@Configuration.
@SpringBootApplicationзаменяет@Configuration,@EnableAutoConfigurationи@ComponentScan.
Comments