我有我需要的ApplicationContext的负载为调用在bean(非静态)方法只一次,一个用例。 它是确定的,如果我使用的MethodInvokingFactoryBean这个? 或者我们有一些更好的解决办法?
作为一个方面说明,我用ConfigContextLoaderListener加载在Web应用程序的应用程序上下文。 并希望,如果豆“A”被实例化只是调用了methodA()一次。
这可怎么好做?
我有我需要的ApplicationContext的负载为调用在bean(非静态)方法只一次,一个用例。 它是确定的,如果我使用的MethodInvokingFactoryBean这个? 或者我们有一些更好的解决办法?
作为一个方面说明,我用ConfigContextLoaderListener加载在Web应用程序的应用程序上下文。 并希望,如果豆“A”被实例化只是调用了methodA()一次。
这可怎么好做?
您可以使用这样的:
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
当bean被实例化这将调用“初始化”方法。
为了扩大在其他的答案中@PostConstruct建议,这真的是最好的解决办法,在我看来。
有考虑三种不同的方法,如所描述的参考
你有没有尝试过实施InitializingBean
? 这听起来像你是什么之后。
缺点是,你的bean成为Spring的,但在大多数应用中,这不是那么糟糕。
你可以部署一个定制BeanPostProcessor的在你的应用环境做到这一点。 或者,如果你不介意实现在bean Spring的接口,你可以使用的InitializingBean接口或“初始化方法”指令(相同的链接)。
为了进一步明确关于这两个办法,即使用任何混乱
@PostConstruct
和init-method="init"
从个人的经验,我意识到,使用(1)只能在一个servlet容器,而(2)在任何环境下使用,即使在桌面应用程序。 所以,如果你在一个独立的应用程序中使用Spring,你将不得不使用(2)开展的是“呼叫初始化后,此方法。