gpt4 book ai didi

java - SpringBoot scanBasePackages 在不同的 jar 中找不到存储库

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:47:19 27 4
gpt4 key购买 nike

我有一个这样的 spring boot 应用程序:

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 是一个不同 JAR 中的 @Service 注释类,我将其作为 Maven 依赖项包含在内。

JAR 文件结构如下:

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

MyRepository 是一个扩展了 Spring Data 接口(interface)的 @Repository 注释接口(interface)。

ServiceInADifferentJarMyRepository 注入(inject)到其构造函数中。

当我启动应用程序时,我收到一个错误,提示找不到 ServiceInADifferentJar

然后我将它添加到我的 SpringBootApp

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

ServiceInADifferentJar 已找到,但未找到 MyRepository

为什么不呢?为什么不扫描其他 JAR 中 some.package 的所有子包?

* 编辑 *

存储库

package some.package.repository;

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

}

最佳答案

您可能想要使用 EnableMongoRepositories注释,以便找到您的 Mongo 存储库。

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

以下问题尽管是关于 JPA 存储库的,但对存储库扫描的工作原理有更多解释:

Can't Autowire @Repository annotated interface in Spring Boot

关于java - SpringBoot scanBasePackages 在不同的 jar 中找不到存储库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50701161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com