我有一个使用情况,需要在ApplicationContext加载时仅调用bean中的非静态方法一次。 如果我使用MethodInvokingFactoryBean,这样做可以吗? 或者我们有更好的解决方案吗?
顺便说一下,我在Web应用程序中使用ConfigContextLoaderListener来加载应用程序上下文。 并且希望,如果实例化了bean 'A',则只调用methodA()一次。
如何优雅地完成这个任务?
我有一个使用情况,需要在ApplicationContext加载时仅调用bean中的非静态方法一次。 如果我使用MethodInvokingFactoryBean,这样做可以吗? 或者我们有更好的解决方案吗?
顺便说一下,我在Web应用程序中使用ConfigContextLoaderListener来加载应用程序上下文。 并且希望,如果实例化了bean 'A',则只调用methodA()一次。
如何优雅地完成这个任务?
对于其他答案中提出的@PostConstruct
建议,我认为这确实是最好的解决方案。
@PostConstruct
位于javax.*
)解耦init-method
属性,Spring将自动调用该方法(无论如何,只要在上下文中的其他地方注册了annotation-config
选项)。你可以像这样使用:
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
这将在实例化Bean时调用“init”方法。有三种不同的方法需要考虑,如文档所述参考
@PostConstruct
是一件好事,因为它是类的一部分,需要在初始化处理结束时调用该方法。 - Donal FellowsInitializingBean
来实现吗?听起来正是你想要的。@PostConstruct
和init-method="init"