未找到来自Maven依赖项的spring boot @repository bean

问题描述 投票:0回答:1

我正在使用spring-data-mongoDB(没有JPA)从事多个Spring Boot项目。一种包含通用(udc通用)组件,存储库和服务,以及其他使用这些组件的组件(例如udc网关)。在其他项目中,udc-common库被声明为maven依赖项。

gateway pom.xml

<dependency>
    <groupId>org.open_si</groupId>
    <artifactId>udc-common</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>

在udc-gateway项目中,我有一个rest控制器,它指向udc-comm SampleService。运行时遇到错误

Parameter 0 of constructor in org.open_si.udc_common.services.SampleService required a bean of type 'org.open_si.udc_common.repositories.SampleRepository' that could not be found.

编码机构是:

  • 控制器(SamplesController)属于gateway项目

  • 服务(SampleService)及其存储库(SampleRepository)属于common项目,在网关项目中被声明为maven依赖项

显然,SampleService注入确实起作用,但其SampleRepository依赖项却无效。由于公共软件包是外部软件包,因此我在网关应用程序主类中相应地设置了@componentscan]

尝试

@ComponentScan("org.open_si.udc_common")

@ComponentScan({
        "org.open_si.udc_common.repositories",
        "org.open_si.udc_common.services"
})

与SampleService相关的SamplesController(gateway

项目)代码摘录是
@RestController
@RequestMapping("/samples")
public class SamplesController {

    @Autowired
    private SampleService service;
......

SampleService(common

项目)为
@Service
@EnableMongoRepositories
public class SampleService {

    @Autowired
    private SampleRepository sr;

    void insert(BaseSampleEntity sample) {
        this.sr.insert(sample);
    }
    public void delete(BaseSampleEntity sample) {
        this.sr.delete(sample);
    }
.....

或也尝试过

@Service
@EnableMongoRepositories
public class SampleService {

    private final SampleRepository sr;

    public SampleService(SampleRepository repository) {
        sr = repository;
    }

    void insert(BaseSampleEntity sample) {
        this.sr.insert(sample);
    }
    public void delete(BaseSampleEntity sample) {
        this.sr.delete(sample);
    }

和SampleRepository(common

项目)为
@Repository
public interface SampleRepository extends MongoRepository<BaseSampleEntity, String> {

    List<BaseSampleEntity> findByNodeUuid(String Uuid, Sort sort, Pageable pageable);

    List<BaseSampleEntity> findByFieldUuid(String Uuid, Sort sort, Pageable pageable);

因此引发异常

Parameter 0 of constructor in org.open_si.udc_common.services.SampleService required a bean of type 'org.open_si.udc_common.repositories.SampleRepository' that could not be found.

使我认为Spring Boot IOC进程出了点问题。有什么主意吗?

感谢您的帮助。

我正在使用spring-data-mongoDB(没有JPA)从事多个Spring Boot项目。包含通用(udc通用)组件,存储库和服务的组件,以及其他使用...

spring-boot rest maven spring-data-mongodb ioc-container
1个回答
0
投票

您需要将Spring JPA依赖项添加到Maven的Mb

© www.soinside.com 2019 - 2024. All rights reserved.