@Autowire不起作用。无法自动装配,具有相同名称的多个bean

时间:2015-10-24 04:42:23

标签: spring spring-mvc

我正在尝试在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”。

我在这里做错了什么?

1 个答案:

答案 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{}