D.C*_*.C. 4 java spring inner-classes
我有以下类结构
public class Outer{
private Mapper a;
....
private class MapperA implements Mapper {
}
private class MapperB implements Mapper {
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Spring配置文件中,我想创建一个外部bean,并将MapperA或MapperB中的一个指定为属性.这可能吗?
<bean id="outer" class="mypackage.Outer">
<property name="a" ?????='????' />
</bean>
Run Code Online (Sandbox Code Playgroud)
编辑:根据答案的反馈更多信息:
我上面的例子让我很懒.我有一个Mapper实例变量的公共setter/getter.
所有Mapper类都是内部类的原因是因为它们可能有很多,并且它们只会在这个类中使用.我只是不想在我的项目中使用大量的课程.也许工厂方法是一个更好的主意.
Spring可以实例化private内部类.您的配置的实际问题是它们也是非的static,因此您需要<constructor-arg .../>:
<bean id="outer" class="mypackage.Outer">
<property name = "a">
<bean class = "mypackage.Outer.MapperA">
<constructor-arg ref = "outer" />
</bean>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)