我对spring框架很陌生,遇到了以下问题。
我有一个ClassA
接口(interface),该接口(interface)由分类的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;
上面的代码抛出错误为
但是,如果我将 Autowiring 更改为界面,如下所示:
@Autowired
ClassA classA1;
然后将ClassA1自动连接到变量。我不知道如何将变量自动连接到ClassA2。
最佳答案
出于某种原因,Spring会代替您的类(class)。发生这种情况的原因有很多。例如,如果您使用JPA或AOP,则将替代原始类。
如果类实现接口(interface),则代理表示动态代理。因此,基本上在运行时会创建一个新类,该类实现了接口(interface),但不继承原始类。因此,自动布线到原始类不起作用。