Au Printemps javaconfig, comment initialiser un @Bean qui dépend d'un @Service

J'ai converti un Printemps 4.0 projet de xml javaconfig.

Lors de l'initialisation, l'un de mes haricots besoin d'accéder à Hibernate pour chercher un peu de config-les données de la DB, par l'intermédiaire d'un Ressort @Service (buildingService). Le haricot d'initialisation ressemble à ceci:

@Bean
@DependsOn({ "transactionManager", "webSocketHandler", "buildingService" })
Smarty smarty() {
    Smarty bean = new Smarty();
    bean.init(); //I also tried @Bean(initMethod = "init") with no difference
    return bean;
}

Le problème est que dans bean.init(), le service est accessible, qui échoue avec un NullPointerException.

J'ai ajouté buildingService à @DependsOn mais il n'a pas aidé.

Probablement le @Serviceannotée classes sont traitées après la @Bean !?

Puis-je initialiser le @Serviceannotées à la classe moi d'avance?

Edit 1

Merci beaucoup pour tous les commentaires !

J'ai besoin d'ajouter quelques détails:

buildingService n'est pas un @Bean, c'est, ainsi, un @Service et ressemble à ceci:

@Service("buildingService")
@Transactional
public class BuildingService {

...

    public List<Building> getAll() {
        final Session session = sessionFactory.getCurrentSession();
        final Query query = session.createQuery("from Building order by name");
        return query.list();
    }

...

}

Smarty est un moteur de Printemps managed Bean, et initialisé dans un @Configurationannotées à la classe qui est en train de faire l'initialisation de la racine de contexte.

Smarty a une dépendance directe sur buildingService, comme suit:

@Resource(name = "buildingService")
private BuildingService     buildingService;

J'ai essayé l'annotation Smarty.init() avec @PostConstruct mais cela n'a pas changer quoi que ce soit.

Noter que la première chose Smarty.init() n'appelle buildingService.getAll();

OriginalL'auteur yglodt | 2014-01-26