遇到一个高手写的代码,思路如下:
有个A接口 有个B抽象类 有a1,a2 两个类 a1先继承B抽象类又实现A接口 a2先继承B抽象类又实现A接口 结果:Spring注入无异常.
如果,按照我的思路:
有个A接口 有a1,a2 两个类 a1实现A接口 a2实现A接口 结果:Spring注入报异常.有二义性. 异常信息:[expected single matching bean but found 2]
贴下测试代码:
接口A: public interface ATestSpringBean { public void getName();
}
抽象类B: public abstract class ATestAbstractSpringBean { public void getName111(){ System.out.println("123"); }
}
启动正常时实现类a1: @Service public class ATestSpringBeanImpl extends ATestAbstractSpringBean implements ATestSpringBean{ public void getName111(){ System.out.println("123"); } @Override public void getName() { // TODO Auto-generated method stub }
}
a2: @Service public class BTestSpringBeanImpl extends ATestAbstractSpringBean implements ATestSpringBean{ public void getName111(){ System.out.println("123"); } @Override public void getName() { // TODO Auto-generated method stub }
}
启动异常时实体类a1: @Service public class ATestSpringBeanImpl implements ATestSpringBean{ public void getName111(){ System.out.println("123"); } @Override public void getName() { // TODO Auto-generated method stub }
}
a2: @Service
public class BTestSpringBeanImpl implements ATestSpringBean{
public void getName111(){ System.out.println("123"); } @Override public void getName() { // TODO Auto-generated method stub }
大神们,这就是我的测试代码,可以放在IDE里跑下看看结果
@Autowired
@Qualifier("具体实现类")
autowired是通过byType注入的,resource使用的是byName
你是用autowired注入的吗?换用resource 注入试试。你倒是把出错代码贴上来啊