Автоподключение репозитория к библиотечному проекту в Spring Boot
Я работаю над многомодульным проектом Spring Boot. Я создал отдельные модули следующим образом
-
com.foodshop.api
- (это проект Spring Boot, отправная точка и то, и другое добавлено здесь в качестве зависимостей) -
com.foodshop.application
- (прикладной уровень, где у меня есть бизнес-логика, это библиотечный проект иspring-boot-starter
и добавляются в качестве зависимостей здесь) -
com.foodshop.persistence
- (здесь определены репозитории,spring-boot-starter-data-mongodb
добавляется как зависимость в этом проекте)
Все 3 проекта, упомянутые выше, завернуты внутри родителя.
pom
проект maven и родитель
pom.xml
выглядит следующим образом;
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.foodshop</groupId>
<artifactId>foodshop-backend</artifactId>
<version>0.0.1</version>
<packaging>pom</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<modules>
<module>foodshop.persistence</module>
<module>foodshop.application</module>
<module>foodshop.api</module>
</modules>
</project>
Проект собирается без ошибок. Класс приложений
foodshop.api
Я аннотировал следующим образом, чтобы он мог видеть зависимости в других модулях.
@SpringBootApplication(scanBasePackages = {"com.foodshop"})
Но когда я пытаюсь запустить проект API, он выглядит так:
foodshop.application
не удается найти и автоматически подключить репозитории, определенные в
foodshop.persistence
Я получаю сообщение об ошибке следующим образом;
***************************
APPLICATION FAILED TO START
***************************
Description:
Parameter 0 of constructor in com.foodshop.application.MealManager required a bean of type 'com.foodshop.persistence.repository.MealRepository' that could not be found.
The injection point has the following annotations:
- @org.springframework.beans.factory.annotation.Autowired(required=true)
Action:
Consider defining a bean of type 'com.foodshop.persistence.repository.MealRepository' in your configuration.
я правильно обозначил
MealRepository
с
@Repository
аннотацию, но я чувствую, что пропустил что-то важное.
Было бы очень признательно, если бы я мог получить некоторую помощь по этому вопросу.
1 ответ
Этот ответ также работает для JPA, используя @EnableJpaRepositories("com.dao.package")