【问题标题】:Spring @Autowired not working - expected at least 1 bean which qualifies as autowire candidateSpring @Autowired 不工作 - 预计至少有 1 个 bean 有资格作为自动装配候选者
【发布时间】:2020-06-22 15:36:19
【问题描述】:

我正在使用带有 Spring Boot 2.4.0-SNAPSHOT 的 Java 14。

我有一个资源,我尝试在其中自动装配approvalRequestService

ApprovalRequestResource.java

@RestController
public class ApprovalRequestResource {

    @Autowired
    ApprovalRequestService approvalRequestService;

这是一个接口:

ApprovalRequestService.java

@Service
public interface ApprovalRequestService {

    List<ApprovalRequestDTO> getApprovalRequests(String token);
}

并具有以下实现:

ApprovalRequestServiceImpl.java

public class ApprovalRequestServiceImpl implements ApprovalRequestService {

    @Autowired
    ApprovalRequestDAO approvalRequestDAO;

    @Autowired
    CompanyContactService companyContactService;

    @Autowired
    JwtTokenUtil jwtTokenUtil;

    @Override
    public List<ApprovalRequestDTO> getApprovalRequests(String jwtToken) {

当我启动 Spring Boot 时,我收到以下错误:

应用程序启动失败

说明:

字段approvalRequestService在 com.nexct.approvalservice.resources.ApprovalRequestResource 需要一个 豆类 'com.nexct.approvalservice.service.ApprovalRequestService' 可以 找不到。

注入点有如下注解:

  • @org.springframework.beans.factory.annotation.Autowired(required=true)

行动:

考虑定义一个 bean 类型 'com.nexct.approvalservice.service.ApprovalRequestService' 在您的 配置。

与目标VM断开连接,地址:'127.0.0.1:55876', 传输:“套接字”

进程以退出代码 0 结束

上下文初始化期间遇到异常 - 取消 刷新尝试: org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为“approvalRequestResource”的 bean 时出错:不满意 通过字段“approvalRequestService”表示的依赖关系;嵌套的 例外是 org.springframework.beans.factory.NoSuchBeanDefinitionException: 否 符合条件的 bean 类型 'com.nexct.approvalservice.service.ApprovalRequestService' 可用: 预计至少有 1 个 bean 有资格作为 autowire 候选者。 依赖注解: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

问题

我怎么接错了?

好像不喜欢 ApprovalRequestResource.java 中的以下内容:

@Autowired
ApprovalRequestService approvalRequestService;

【问题讨论】:

  • 嗨,有趣,也许是自动扫描问题?

标签: java spring spring-boot


【解决方案1】:

你必须把@Service注解放在实现而不是接口

public interface ApprovalRequestService {

    List<ApprovalRequestDTO> getApprovalRequests(String token);
}

@Service
public class ApprovalRequestServiceImpl implements ApprovalRequestService {

【讨论】:

  • 感谢您的回答。当我尝试将 @Service 注释移动到实现时,我在有 @Autowired ApprovalRequestDAO approvalRequestDAO; - Could not autowire. No beans of 'ApprovalRequestDAO' type found. 的实现中遇到编译错误
  • ApprovalRequestDAO 类是否需要一个注释来定义它是什么?我尝试将@Bean 添加到ApprovalRequestDAO,但出现以下错误:'@Bean' not applicable to type
  • 嗨,西蒙,我搞定了,谢谢。我需要在链中注释实现,即将@Repository 添加到DAO。所以你的答案是正确的,@Service 注释需要在实现而不是接口上。
猜你喜欢
  • 1970-01-01
  • 2021-10-12
  • 2021-01-30
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
  • 2021-01-13
  • 2020-02-12
  • 1970-01-01
相关资源
最近更新 更多