J'ai un cas d'utilisation où j'ai besoin d'appeler une méthode (non statique) dans le bean une seule fois lors du chargement de ApplicationContext. Est-ce correct si j'utilise MethodInvokingFactoryBean pour cela? Ou nous avons une meilleure solution?
En guise de remarque, j'utilise ConfigContextLoaderListener pour charger le contexte d'application dans une application Web. Et vous voulez que si le bean 'A' est instancié, appelez simplement methodA () une fois.
Comment cela peut-il être fait gentiment?
Vous pouvez utiliser quelque chose comme:
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
Cela appellera la méthode "init" lorsque le bean sera instancié.
Pour développer la suggestion de @PostConstruct dans d’autres réponses, c’est la meilleure solution, à mon avis.
Il existe trois approches différentes à considérer, comme décrit dans le référence
Avez-vous essayé d'implémenter InitializingBean
? Cela ressemble exactement à ce que vous recherchez.
L'inconvénient est que votre bean devient Spring-aware, mais dans la plupart des applications, ce n'est pas si grave.
Vous pouvez déployer un personnalisé BeanPostProcessor dans votre contexte d'application pour le faire. Ou, si l'implémentation d'une interface Spring dans votre bean ne vous dérange pas, vous pouvez utiliser l'interface InitializingBean ou la directive "init-method" (même lien).