2014-07-17 1 views
0

Dans une API, j'ai deux classes A et B, qui implémentent une interface C. J'ai un DAO (on peut appeler D) qui utilise Spring beanFactory pour charger A ou B, selon une valeur dans un fichier de propriétés. Cette propriété est liée à une valeur de base de données.

Je veux utiliser l'annotation PostConstruct de printemps pour écrire ce qui suit:
L'annotation PostConstruct de Spring est-elle liée à la session?

@PostConstruct  
public void setUp(){ 
    C file = (C) beanFactory.getBean(propertyValue); 
} 

Mais je ne suis pas clair si PostConstruct de printemps sera appelée une seule fois lorsqu'une application est compilée, ou si elle est exécuté une fois par session?

De plus, je me sers:

@Value("${property.variable.value}") 
private String propertyValue; 

qui tire efficacement correctement la valeur de tout fichier propriété a été chargé en session.

Répondre

1

Il est lié à l'instanciation du bean, qui est indépendante de la portée du bean.

Si le bean est un singleton normal pour une application, Spring n'appelle la méthode qu'une seule fois; à savoir, le moment où le printemps crée le haricot. Si le bean a une portée prototype, alors Spring appellera @PostConstruct chaque fois qu'il créera le bean.

+0

bien articulé réponse-acceptant –

Questions connexes