У меня есть более крупное Spring Boot Application (Nr.1), которое состоит из нескольких модулей около 20+ (настройка нескольких модулей).
Внутри этого у меня есть еще одно Spring Boot Application (Nr.2), которое содержит несколько сервисов и т. Д.
app-1
+...
module-jpa
+-- pom.xml
+-- src/main/java/jpa/ (JPA Classes; Entities etc.)
module-repos
+-- pom.xml
+-- src/main/java/repos/ JPA Repositories; XYZ extends CrudRepository<..>.
module-app
+-- pom.xml (dependency on module-jpa and module-repos)
+-- src
+-- main
+-- java
+-- xyz
+-- application
+-- SpringBootApp.java
+-- services
+-- Service1.java
+-- Service2.java
+-- src
+-- test
+-- java
+-- services
+-- Service1IT.java
+-- Service2IT.java
+-- resources
+-- application.properties
В вышеупомянутой совокупности интеграционные тесты работают нормально (Service1IT и Service2IT).
Теперь я реорганизовал module-app
в два отдельных модуля module-app
и module-app-cli
, потому что я хотел повторно использовать module-app
.Результат выглядит следующим образом:
module-app
+-- pom.xml (dependency on module-jpa and module-repos)
+-- src
+-- main
+-- java
+-- services
+-- Service1.java
+-- Service2.java
+-- src
+-- test
+-- java
+-- services
+-- Service1IT.java
+-- Service2IT.java
+-- resources
+-- application.properties
module-app-cli
+-- pom.xml (dependency on module-jpa, module-repos, module-app)
+-- src
+-- main
+-- java
+-- xyz
+-- application
+-- SpringBootApp.java
+-- resources
+-- application.properties
Но теперь интеграционные тесты для Service1IT.java
и т. Д. Больше не работают с такими исключениями:
xyzTest(xyz.abcIT) Time elapsed: 0.141 s <<< ERROR!
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'firstService':
Unsatisfied dependency expressed through field 'secondService';
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name '.........'repos.ABCRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
Что я не понимаюв тот момент, когда простое разделение SpringBootApp
на отдельный модуль приводит к сбою интеграционных тестов, которые не связаны с SpringBootApp.java
, но на основании результатов, по-видимому, они связаны?Вопрос в том, можно ли это решить?
Полагаю, я упускаю из виду то, что мне не понятно?Есть ли у кого-нибудь предложения, что может вызвать такое поведение?
Некоторые подробности:
Использование Spring Boot версии 2.1.3.RELEASE
Если вам нужнобольше информации, пожалуйста, оставьте комментарий.
Обновление 1
Я просто пытаюсь найти другие способы решения проблемы.Итак, я начал с самого начала и просто удалил основной класс SpringBootApp из module-app
, а также удалил вызов spring-boot-maven-plugin в файле pom.xml, и в результате получилось просто:
service1IT(services.Service1IT) Time elapsed: 0.004 s <<< ERROR!
java.lang.IllegalStateException:
Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'xyzService': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'javax.persistence.EntityManagerFactory' available
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'javax.persistence.EntityManagerFactory' available