Весной найдите репозиторий из другого проекта

#java #spring

#java #spring

Вопрос:

У меня есть несколько проектов, использующих spring 2.1.3, и я хотел бы позволить им совместно использовать некоторые объекты вместе со своими репозиториями.

Пример репозитория:

 package com.my.otherproject.pojos;

import org.bson.types.ObjectId;
import org.springframework.data.mongodb.repository.ReactiveMongoRepository;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

@Repository
public interface UserDataRepository extends ReactiveMongoRepository<UserData, ObjectId> {
  Mono<UserData> findByEmail(String name);
}
 

Он otherproject включен в gradle

 compile project(':pojobase')
 

И я добавил

 @ComponentScan(basePackages = {"com.my.firstproject", "com.my.otherproject"})
 

в @Configuration файл.

Когда я пытаюсь использовать вышеуказанный репозиторий в своем основном проекте, я получаю сообщение об ошибке

Описание:

Для параметра 0 конструктора в com.my.firstproject.controllers.CustomerController требуется компонент типа ‘com.my.otherproject.pojos.UserDataRepository’, который не удалось найти.

Экшен:

Рассмотрите возможность определения компонента типа ‘com.my.otherproject.pojos.UserDataRepository’ в вашей конфигурации.

Возможно ли каким-то образом использовать объекты и репозитории в моем приложении Spring?

Ответ №1:

Дополнительный @EnableReactiveMongoRepositories(basePackages = {"com.my.otherproject.pojos"}) Main класс

 @EnableReactiveMongoRepositories(basePackages = {"com.my.otherproject.pojos"})
public class Main {

public static void main(String[] args) {

    SpringApplication.run(Main.class);

   }
}
 

Комментарии:

1. Я использую ReactiveMongo , поэтому JPA не работает. Но добавление @EnableReactiveMongoRepositories(basePackages = {"com.my.otherproject.pojos"}) соответственно работает отлично. Спасибо…