我对spring框架很陌生,遇到了以下问题。

我有一个ClassA接口(interface),该接口(interface)由分类的ClassA1ClassA2实现。

我将以下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),但不继承原始类。因此,自动布线到原始类不起作用。

10-01 19:23