Spring:将私有内部类注入外部类的成员?

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)

编辑:根据答案的反馈更多信息:

  1. 我上面的例子让我很懒.我有一个Mapper实例变量的公共setter/getter.

  2. 所有Mapper类都是内部类的原因是因为它们可能有很多,并且它们只会在这个类中使用.我只是不想在我的项目中使用大量的课程.也许工厂方法是一个更好的主意.

axt*_*avt 7

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)