没有可用类型 'ru.spb.repository.UserRepository' 的符合条件的 bean:预计至少有 1 个符合自动装配候选条件的 bean
No qualifying bean of type 'ru.spb.repository.UserRepository' available: expected at least 1 bean which qualifies as autowire candidate
存储库class:
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 接口上添加@Repository,但没有成功。
您还需要注释界面
package ru.spb.repository;
@Repository
public interface UserRepository {
}
您的组件扫描仅配置到实施包 class,但您正在自动装配位于不同(非组件扫描)包上的接口。
将 @Repository
注释移动到界面,并将 ru.spb.repository
添加到您的 component-scan
我搬家了
<context:component-scan base-package="ru.spb.repository.user"/>
从 spring-db.xml 到 spring-app.xml。这个问题就解决了。
但是我不明白这个问题的原因。
存储库class:
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 接口上添加@Repository,但没有成功。
您还需要注释界面
package ru.spb.repository;
@Repository
public interface UserRepository {
}
您的组件扫描仅配置到实施包 class,但您正在自动装配位于不同(非组件扫描)包上的接口。
将 @Repository
注释移动到界面,并将 ru.spb.repository
添加到您的 component-scan
我搬家了
<context:component-scan base-package="ru.spb.repository.user"/>
从 spring-db.xml 到 spring-app.xml。这个问题就解决了。 但是我不明白这个问题的原因。