Приложение 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.



Спасибо!

703   2  

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

    Ничего не найдено.