【问题标题】:No qualifying bean of type 'ru.spb.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate没有可用的“ru.spb.repository.UserRepository”类型的合格bean:预计至少有1个有资格作为自动装配候选者的bean
【发布时间】:2020-02-14 11:03:22
【问题描述】:

存储库类:

 package ru.spb.repository.user;

@Repository
public class AnketUserRepository implements UserRepository {

     @Autowired
     private CrudUserRepository crudRepository;

 }

界面:

package ru.spb.repository;

public interface UserRepository {
}

服务:

package ru.spb.service;

@Service
public class UserService {

   private final UserRepository repository;

   @Autowired
   public UserService (UserRepository repository){
       this.repository = repository;
   }
}

配置: 在 spring-app.xml 中:

 <context:component-scan base-package="ru.spb.service"/> 

在 spring-db.xml 中:

 <context:component-scan base-package="ru.spb.repository.user"/>

但我发现了以下异常:

 NoSuchBeanDefinitionException: No qualifying bean of type 'ru.spb.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}

我尝试在 UserRepository-interface 上添加@Repository,但没有成功。

【问题讨论】:

    标签: java spring web-services configuration


    【解决方案1】:

    您还需要对接口进行注释

    package ru.spb.repository;
    
    @Repository
    public interface UserRepository {
    }
    

    【讨论】:

    • 我现在和以前都这样做过,但有同样的例外
    【解决方案2】:

    您的组件扫描仅配置到实现类的包,但您正在自动装配位于不同(非组件扫描)包上的接口。
    @Repository注解移动到接口,并将ru.spb.repository添加到您的组件扫描中

    【讨论】:

    • 我将 @Repository 注释添加到接口,并将 ru.spb.repository 添加到我的组件扫描中。但我发现了同样的异常......
    【解决方案3】:

    我搬家了

     <context:component-scan base-package="ru.spb.repository.user"/>  
    

    从 spring-db.xml 到 spring-app.xml。而这个问题就解决了。 但是我不明白这个问题的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 2019-09-25
      • 2020-05-31
      • 2021-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多