Spring自动装配仅适用于接口
问题内容:
我对Spring框架很陌生,遇到了以下问题。
我有一个接口ClassA
,由class ClassA1
和实现ClassA2
。
我将以下bean定义添加到 applicationContext.xml
<bean id="class1" class="com.abc.ClassA1" />
<bean id="class2" class="com.abc.ClassA2" />
我想自动连接以下两个实现类。
@Autowired
private ClassA1 classA1;
@Autowired
private ClassA2 classA2;
上面的代码抛出错误为
无法自动写入字段:com.abc.ClassA1 com.abc.SomeClass.classA1;
嵌套的异常是org.springframework.beans.factory.NoSuchBeanDefinitionException:没有匹配类型[com.abc.ClassA1]的bean
但是,如果我将自动装配更改为界面,如下所示:
@Autowired
ClassA classA1;
然后将ClassA1自动连接到变量。我不知道如何将变量自动连接到ClassA2。
问题答案:
我尝试了多种方法来解决此问题,但是我可以通过以下方式使其工作。
@Autowired
private ClassA classA1;
@Autowired
private ClassA classA2;
在应用程序上下文中,我如下定义了bean:
<bean id="classA1" class="com.abc.ClassA1" autowire="byName" />
<bean id="classA2" class="com.abc.ClassA2" autowire="byName" />