Spring: Obtención del objeto FactoryBean en lugar de FactoryBean.getObject ()

Pregunta corta: Si tengo una clase que impele la interfaz de FactoryBean, ¿cómo puedo obtener del propio objeto de FactoryBean en lugar de FactoryBean.getObject ()?

Pregunta larga: Tengo que usar una biblioteca basada en Spring de terceros, que casi no usa la interfaz FactoryBean. En este momento siempre debo configurar 2 beans:

<!-- Case 1-->
<bean id="XYZ" class="FactoryBean1" scope="prototype">
    <property name="steps">
        <bean class="FactoryBean2">
            <property name="itemReader" ref="aName"/>
        </bean>
    </property>
</bean>

<bean id="aName" class="com.package.ClassName1" scope="prototype">
    <property name="objectContext">
        <bean class="com.package.ABC"/>
    </property>
</bean>

<!-- Case 2-->
<bean id="XYZ2" class="FactoryBean1" scope="prototype">
    <property name="steps">
        <bean class="FactoryBean2">
            <property name="itemReader" ref="aName2"/>
        </bean>
    </property>
</bean>

<bean id="aName2" class="com.package.ClassName1" scope="prototype">
    <property name="objectContext">
        <bean class="com.package.QWE"/>
    </property>
</bean>

La definición real de un bean con el nombre "XYZ" (comparar con "XYZ2") nunca se modificará, pero debido a la naturaleza de fábrica, debo copiar el código para cada configuración. La definición de un bean con el nombre "aName" siempre será nueva (es decir, cada configuración tendrá su propio valor objectContext).

Me gustaría simplificar la configuración, tener un solo bean de fábrica (eliminar "XYZ2" y eliminar el enlace a "aName"):

<bean id="XYZ" class="FactoryBean1" scope="prototype">
    <property name="steps">
        <bean class="FactoryBean2"/>
    </property>
</bean>

<bean id="aName" class="com.package.ClassName1" scope="prototype">
    <property name="objectContext">
        <bean class="com.package.ABC"/>
    </property>
</bean>


<bean id="aName2" class="com.package.ClassName1" scope="prototype">
    <property name="objectContext">
        <bean class="com.package.QWE"/>
    </property>
</bean>

Desafortunadamente, no es tan simple como espero. Supongo que debo pegar la fábrica (es decir, el bean XYZ del ejemplo) con los objetos necesarios (es decir, "aName", "aName2") en el tiempo de ejecución. El enfoque no funciona porque cuando le pregunto a Spring por el objeto FactoryBean me devuelve FactoryBean.getObject () que es imposible de instanciar en ese momento debido a que falta el valor de ItemReader.

Espero que SpringSource prevea mi caso. En algún lugar puedo "llamar" a FactoryBean.getObject () para proporcionar todas las propiedades necesarias en tiempo de ejecución.

Otra complejidad que me molesta un poco son las cadenas de fábricas (Factory1 obtiene un objeto de Factory2 que tengo que "enganchar" en tiempo de ejecución).

Cualquier idea será apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta