FactoryBeans y la configuración basada en anotaciones en Spring 3.0

Spring proporciona elFactoryBean interfaz para permitir la inicialización no trivial de beans. El marco proporciona muchas implementaciones de beans de fábrica y, cuando se usa la configuración XML de Spring, los beans de fábrica son fáciles de usar.

Sin embargo, en Spring 3.0, no puedo encontrar una manera satisfactoria de usar beans de fábrica con la configuración basada en anotaciones (née JavaConfig).

Obviamente, podría crear una instancia manual del bean de fábrica y establecer las propiedades requeridas yo mismo, de esta manera:

@Configuration
public class AppConfig {

...

    @Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
        factory.setDataSource(dataSource());
        factory.setAnotherProperty(anotherProperty());

        return factory.getObject();
    }

in embargo, esto fallaría si laFactoryBean implementó cualquier interfaz de devolución de llamada específica de Spring, comoInitializingBean, ApplicationContextAware, BeanClassLoaderAware o@PostConstruct por ejemplo. También necesito inspeccionar FactoryBean, averiguar qué interfaces de devolución de llamada implementa, y luego implementar esta funcionalidad yo mismo llamando asetApplicationContext, afterPropertiesSet() etc.

Esto me resulta incómodo y de principio a fin: los desarrolladores de aplicaciones no deberían tener que implementar las devoluciones de llamada del contenedor IOC.

¿Alguien sabe de una mejor solución para usar FactoryBeans de las configuraciones de Spring Annotation?

Respuestas a la pregunta(6)

Su respuesta a la pregunta