Автоподключение репозитория к библиотечному проекту в 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")

Другие вопросы по тегам