Answers:
您可以使用类似:
<beans>
<bean id="myBean" class="..." init-method="init"/>
</beans>
实例化bean时,它将调用“ init”方法。
以其他答案扩展@PostConstruct的建议,我认为这确实是最好的解决方案。
<context:component-scan>
也可以工作,并且如果您在类路径上有很大的非Spring库,则可以减少启动时间。
如参考文献中所述,可以考虑三种不同的方法
@PostConstruct
准确地使用它实际上是一件好事,因为它是类的一部分,需要在初始化处理结束时调用方法。
您是否尝试实施InitializingBean
?听起来完全像您在追求什么。
缺点是您的bean可以识别Spring,但在大多数应用程序中还不错。
您可以在应用程序上下文中部署自定义BeanPostProcessor来实现。或者,如果您不介意在bean中实现Spring接口,则可以使用InitializingBean接口或“ init-method”指令(相同的链接)。
为了进一步消除对这两种方法的混淆,即使用
@PostConstruct
和init-method="init"
根据个人经验,我意识到使用(1)仅在servlet容器中有效,而(2)在任何环境中均有效,即使在桌面应用程序中也是如此。因此,如果要在独立应用程序中使用Spring,则必须使用(2)来执行“初始化后调用此方法”。
@PostConstruct
(在基于Spring的应用程序中使用时)与拥有的Spring上下文的寿命相关。这样的上下文可以在各种应用程序中使用。