Printemps - utiliser des haricots d'usine en configuration?

Quelle est la façon correcte d'utiliser l'usine de haricots dans @Configuration classes?

Supposons que j'ai la suite pour SessionFactory:

@Bean
public AnnotationSessionFactoryBean sessionFactory() {
    AnnotationSessionFactoryBean factory = new AnnotationSessionFactoryBean();
    //set up properties etc.
    return factory;
}

Dès maintenant cette méthode retourne un haricot usine qui ne mettent pas en œuvre SessionFactory. Si je l'utilise dans un autre bean avec @Autowired comme SessionFactoryil fonctionne très bien et l'obtient, de la fève de l'usine:

@Controller
public class MyController {
    @Autowired SessionFactory sessionFactory;
    //...
}

Je suppose que c'est OK.

Cependant, cela devient un problème si je veux utiliser le SessionFactory dans la même classe de configuration:

@Bean
public HibernateTransactionManager transactionManager() {
    HibernateTransactionManager man = new HibernateTransactionManager();
    //Ideal - doesn't work because sessionFactory() return type doesn't match:
    //SessionFactory sessionFactory = sessionFactory();
    //Is this one correct?
    //SessionFactory sessionFactory = (SessionFactory) sessionFactory().getObject();
    man.setSessionFactory(sessionFactory);
    return man;
}

Quelle est La bonne Façon de mettre en œuvre ce type de dépendance?

source d'informationauteur Konrad Garus