【问题标题】:UnsatisfiedDependencyException:Error creating bean with name 'employeeController': Unsatisfied dependency expressed through field 'repository'UnsatisfiedDependencyException:创建名为“employeeController”的bean时出错:通过字段“repository”表达的不满足依赖关系
【发布时间】:2021-08-14 09:54:47
【问题描述】:

我面临以下错误:

-取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“employeeController”的bean时出错:通过字段“repository”表示的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“com.example.demo.EmployeeRepository”类型的合格 bean 可用:预计至少有 1 个有资格作为候选者的 bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

下面是我的代码(我没有故意做任何服务类,通过添加服务类发生同样的错误)

EmployeeController.java

    @RestController
    public class EmployeeController {
    
        @Autowired
        EmployeeRepository repository;
        
        @PostMapping("/employee/add")
        public Employee addEmployee(@RequestBody Employee emp)
        {
            return repository.save(emp);
        }
        
        @GetMapping("/employee/{id}")
        public Optional<Employee> getEmployee(@PathVariable Integer id)
        {
            return repository.findById(id);
        }
        
        @PutMapping("/employee/{id}")
        public Employee updateEmployee(@PathVariable Integer id,@RequestBody Employee emp)
        {
            Optional<Employee> employee=repository.findById(id);
            if(employee.isPresent())
            {
                return repository.save(emp);
            }
            else
            {
                return null;
            }
        }
        
        @DeleteMapping("/employee/{id}")
        public String deleteEmployee(@PathVariable Integer id)
        {
            repository.deleteById(id);
            return "Document Deleted";
        }
            
        }

EmployeeRepository.java

    @Repository
    public interface EmployeeRepository extends CouchbaseRepository<Employee, Integer>{
        
    
    }

我无法理解为什么在使用@AutowiredemployeeController 无法获得employeeRepository 的依赖关系。请让我知道这里出了什么问题

【问题讨论】:

  • 您是否为注释使用了正确的导入?
  • 是的,正在导入 -> import com.example.demo.EmployeeRepository;导入 org.springframework.beans.factory.annotation.Autowired;这些用于 EmployeeController,以下用于 EmployeeRepository-> package com.example.demo;导入 org.springframework.data.couchbase.repository.CouchbaseRepository;导入 org.springframework.stereotype.Repository;

标签: spring-boot controller dependencies repository autowired


【解决方案1】:

您可以创建一个扩展 AbstractCouchbaseConfiguration 的配置类并覆盖其方法,您需要在其中指定 Couchbase 的 IP 地址、存储桶名称、用户名和密码。我希望它应该在那之后工作。

【讨论】:

    【解决方案2】:

    你必须导入包org.springframework.data.repository.Repository;

    因为如果你去 CouchBaseRepository,它不是从原型扩展而来的: https://docs.spring.io/spring-data/couchbase/docs/current/api/org/springframework/data/couchbase/repository/CouchbaseRepository.html

    【讨论】:

    • 如果我这样做(将我的导入从 org.springframework.stereotype.Repository; 更改为导入包 org.springframework.data.repository.Repository;),我的 @Repository 注释不起作用并显示错误
    • 这意味着你需要检查你的 Maven 导入
    猜你喜欢
    • 2020-04-04
    • 2020-07-26
    • 2017-05-24
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    相关资源
    最近更新 更多