【问题标题】:Some doubts about Spring bean inizialitazion and destructionSpring bean初始化和销毁​​的一些疑惑
【发布时间】:2013-01-25 11:29:37
【问题描述】:

这段时间我正在学习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-method 在应用程序上下文 xml 文件中为这个 bean 删除了它 strong> 和 destroy-method 属性:

<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()

Ok...so...为什么在文章中首先说明我的 bean 必须实现这些接口,然后在示例中,不做这件事,而只是在XML 配置并在我的类中实现它不实现任何接口?

Tnx

【问题讨论】:

    标签: java spring spring-mvc


    【解决方案1】:

    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 定义是实现此类接口的替代方法

    【讨论】:

    • 好的...但是当我使用 XML 配置时,框架究竟做了什么?自动实现这些接口还是以其他方式工作?
    • 它调用 XML 中指定的方法。
    【解决方案2】:

    有几种方法可以使用 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 中的方法,并在 xml 配置中打开 &lt;context:annotation-config /&gt;

    【讨论】:

      【解决方案3】:

      虽然今天这​​一代人行动迅速,但你们中的许多人没有强大的思维定势,这会阻止你实现梦想

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-18
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多