我正在尝试在intellij中创建spring项目。我有以下界面:
DAO
public interface DAO<T> {
public int create(T object);
public T read(int id);
public int update(int id, T object);
public int delete(int id);
}
我还有另外两个类,Employee和Customer,它们使用@Repository注释来实现这个接口。
当我尝试@Autowire我的控制器类中的DAO接口时,IntelliJ显示编译时错误“无法自动装配,找到DAO类型的多个bean”。
我在这里做错了什么?
答案 0 :(得分:3)
当您在属性上设置@Autowired
时,它将使用autowire byType来解析协作bean。因此,在您所描述的情况下,它将产生多个限定bean的冲突。
要解决此问题,您应该使用@Qualifier注释,并为@Repostiory
注释添加名称,例如
class YourController
{
@Qualifier("customer")
@Autowired
private Dao customerRepository;
}
@Repository("customer")
class Customer implements Dao{}
@Repository("employee")
class Employee implements Dao{}