SpringBoot scanBasePackages не находит репозиторий в другом банке - PullRequest
0 голосов
/ 05 июня 2018

У меня есть приложение для весенней загрузки, подобное этому:

package my.package;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration;
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;

@SpringBootApplication
public class MySpringBootApp{

    public static void main(String[] args) {
        SpringApplication.run(MySpringBootApp.class, args);
    }

}

У меня есть служба в пакете my.package.service

@Service
public class MyService {

private ServiceInADifferentJar  dep;

public MySerivce(ServiceInADifferentJar dep) {
this.dep = dep;
}

}

Класс ServiceInADifferentJar является @Serviceаннотированный класс в другом JAR, который я включаю как зависимость maven.

JAR имеет такую ​​файловую структуру:

src/main/java
- some.package.repository
    MyRepository.java
- some.package.service
    ServiceInADifferentJar.java

MyRepository - это аннотированный интерфейс @Repository, расширяющийВнутренний интерфейс Spring Data.

ServiceInADifferentJar получает в конструктор MyRepository.

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

Затем я добавил это к своему SpringBootApp

@SpringBootApplication(scanBasePackages = {"some.package"})

и ServiceInADifferentJar найдено, но не MyRepository.

Почему бы и нет?Почему не все подпакеты some.package в другом JAR сканируются?

* РЕДАКТИРОВАТЬ *

Репозиторий

package some.package.repository;

    @Repository
    public interface MyRepository extends MongoRepository<SomeEntity, String> {

    }

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Возможно, вы захотите использовать аннотацию EnableMongoRepositories , чтобы ваш репозиторий Mongo был найден.

@EnableMongoRepositories(basePackages = "some.package.repository")

Следующий вопрос, несмотря на то, что он касается репозиториев JPA, содержит несколько дополнительных пояснений окак работает сканирование репозиториев:

Не удается автоматически подключить аннотированный интерфейс @Repository в Spring Boot

0 голосов
/ 05 июня 2018

Эй, парень, вы должны поместить это в свой основной класс после тега @SpringBootApplication @ComponentScan (basePackages = {"some.package"})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...