当前位置: 首页 > 知识库问答 >
问题:

字段存储库位于。。。NoteController需要类型为的bean。。。找不到NoteRepository

公良信然
2023-03-14

我试图执行一个Spring项目,但总是返回一个错误,我不知道问题是否出在Spring Boot的版本上。

我有两个项目:

  • IntegrationCore(spring boot项目)

project IntegrationCore包含project IntegrationModel(构建路径)的引用-

当我执行项目IntegrationCore(运行为-

应用程序启动失败

说明:

com.integration.controller.NoteController中的字段存储库需要

我试过:

  • 将Spring Boot的版本从1.5.7更改为1.5.20;
  • 包括Application类中mongoDb的anotation;
  • 插入引用IntegrationCore包的注释;

集成核心

 src/
 ├── main/
 │   └── java/
 |       ├── com.integration/
 |       |   └── IntegrationCoreApplication.java
 |       ├── com.integration.controller/
 |       |   └── NoteController.java
 |       └── com.integration.repository/
 |           └── NoteRepository.java

集成模型

 src/
 ├── main/
 │   └── java/
 |       ├── com.integrationModel/
 |       |   └── NoteStatuses.java
 |       └── com.integrationModel.filter/
 |           └── NoteStatusesParams.java

IntegrationCoreApplication。Java语言

package com.integration;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages={
"com.integration", "com.integrationModel"})
public class IntegrationCoreApplication {

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

}

NoteController。Java语言

package com.integration.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.integrationModel.NoteStatuses;
import com.integrationModel.filter.NoteStatusesParams;
import com.integration.repository.NoteRepository;

@Component
@RestController
@RequestMapping(value = "/services/nota")
public class NoteController {

    @Autowired
    private NoteRepository repository;

    @RequestMapping(value = "/getStatuses", method = RequestMethod.POST)
    @ResponseBody
    public List<NoteStatuses> getStatuses(@RequestBody List<NoteStatusesParams> params) {
        return repository.findStatuses(params);
    }

}

注意epository.java

package com.integration.repository;

import java.util.List;

import org.springframework.stereotype.Service;

import com.integrationModel.NoteStatuses;
import com.integrationModel.filter.NoteStatusesParams;

@Service
public interface NoteRepository {
    List<NoteStatuses> findStatuses(List<NoteStatusesParams> param);
}

NoteStatusesParams.java

package com.integrationModel.filter;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Singular;

import java.util.List;

@Getter
@Builder(builderClassName = "Builder")
@NoArgsConstructor
@AllArgsConstructor
public class NoteStatusesParams {
    @Singular
    private List<String> orderNumbers;
    private String providerCpfCnpj;
    private String noteNumber;
}

注释状态。Java语言

package com.integrationModel;

import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Date;

@Data
@EqualsAndHashCode(of = {"id"})
public class NoteStatuses {

    private Boolean physicalReceipt;
    ...
}

共有2个答案

邢凌
2023-03-14

如果您使用NoteRepository作为存储库,那么最好使用@Repository而不是@Service。

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

@SpringBootApplication注释相当于使用@Configuration、@EnableAutoConfiguration和@ComponentScan及其默认属性。使用3个注释和1个@SpringBootApplication之间的区别只是使用这些,

@Configuration
@EnableAutoConfiguration
@Import({ ABC.class, XYZ.class }) 

@组件注释类不会自动检测到,用户定义的bean会显式导入(请参见@Import)。

梁丘洲
2023-03-14

问题在于您的以下定义。

@Service
public interface NoteRepository {
    List<NoteStatuses> findStatuses(List<NoteStatusesParams> param);
}

它是一个接口,您不能使用@Service将其定义为服务。Spring将尝试为这个bean创建一个实例,因此它失败了。

您需要使用@Repostiry注释并通过扩展您的相关存储库(即JPA或ElasticSearch存储库)将其定义为存储库。

 类似资料:
  • 我是一名spring boot学习者,所以我一直在尝试创建一些基本的spring boot应用程序。我试图运行开发的应用程序时出错。 我的错误是[[https://i.stack.imgur.com/oyQDi.png][1]][1] java: ItemDetails.java:[软件包名称:io.ajithan.springbootstarter.model] ItemResponse.jav

  • 结构没有问题。spring boot可以扫描UserMapper,但不能扫描UserService。我试着给我的UserService@Mapper组件,然后它就可以被扫描了。但我不知道如何使用其他方法进行扫描。我尝试了@服务,但不起作用。

  • 早上好!尽管我做了很多研究,但我无法用application spring解决这个问题,有人可以帮我,我使用jdk 17 我的服务类 我的存储库类 } 4.0.0 org.springframework。boot spring boot starter父版2.6.7 com。无限逻辑解码_后端0.0.1-SNAPSHOT解码_后端解码_后端 我的项目结构在此处输入图像描述

  • 问题内容: 每当启动应用程序spring启动时,我都会收到以下错误。 申请开始失败 描述: com.base.model.AbstractDao中的现场会话需要找不到“ org.hibernate.SessionFactory”类型的Bean。 行动: 考虑在配置中定义类型为“ org.hibernate.SessionFactory”的bean。 我添加了我的应用程序的实现: POM.xml 应

  • 我有一个java项目,它将Spring Boot与JPA结合使用,并将Hibernate用于数据库。我正在尝试建立一个访问数据库的微服务。(我不熟悉微服务和Spring Boot)。 以下是主要课程: IGmCircularsDAO. class: GMCircularsDAOImpl。类别: ParentDAO。班 循环服务。班 当我运行这段代码时,我遇到了以下错误,我已经陷入其中一段时间了。

  • 我是spring boot的新手,一直在尝试制作简单的REST web应用程序。我遵循了不同指南中所示的步骤,但当我尝试运行应用程序时,仍然会遇到同样的问题。 这是我每次尝试运行代码时看到的输出 项目类别: