0

在这期间我正在学习 Spring Framework。

现在我正在研究spring Bean生命周期,特别是关于bean的初始化和销毁​​,阅读本教程:

http://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm

我已经实现了上一篇文章中提出的示例,但我对这个论点有疑问。

在示例中,我只有两个类:HelloWorld.javaMainApp.java

HelloWorld.java类中,我有两个用于 bean 初始化的方法:init()(在创建 bean 后由框架调用)和用于 bean 清理:* destroy()(在 bean 销毁之前由框架调用在我的申请结束时)

好的,这很清楚,这两个方法在 bean 生命周期的两个特定时刻由框架自动调用,因为我已经通过init-methoddestroy-method属性在应用程序上下文 xml 文件中为这个 bean 删除了它:

<bean id="helloWorld" 
    class="org.andrea.myexample.myInitDestroyExample.HelloWorld"
    init-method="init" destroy-method="destroy">
    <property name="message" value="Hello World!"/>
</bean>

这对我来说很清楚。

我有一些问题要理解与上一篇文章的开头有关,实际上它表明要具有初始化方法,我的bean必须实现InitializingBean接口及其方法的代码:afterPropertiesSet()

为了执行 bean 清理(在此之前这是删除),我的 bean 必须实现DisposableBean接口及其方法的代码:destroy()

好的...所以...为什么在文章中首先显示我的 bean 必须实现这些接口,然后在示例中,不做这件事,而只是在 XML 配置中声明存在 init 和 destroy 方法,然后在我的类中实现它不实现任何接口?

肿瘤坏死因子

4

3 回答 3

5

In the case of XML-based configuration metadata, you can use the init-method attribute to specify the name of the method that has a void no-argument signature

XML 定义是实现此类接口的替代方法。

于 2013-01-25T11:33:11.363 回答
3

有几种方法可以使用 Spring 的 bean init/destroy

1)您可以定义 default-init-method / default-destroy-method beans(根元素 xml 配置)然后 Spring 将在它实例化的任何 bean 中查找这些方法

2)您可以为 bean 定义单独的 init-method / destroy-method

3)您可以实现 InitializingBean / DisposableBean 接口,即使xml配置中未定义init-method / destroy-method,Spring也会调用它们

4)您可以使用 @PostConstruct / @PreDestroy 注释来注释 bean 中的方法并<context:annotation-config />在 xml 配置中打开

于 2013-01-25T11:53:00.070 回答
-2

虽然今天这​​一代人行动迅速,但你们中的许多人没有强大的心态,阻碍了你实现梦想

于 2013-01-26T13:59:16.853 回答