关于Spring bean inizialitazion和destroy的一些疑问

时间:2013-01-25 11:29:38

标签: java spring spring-mvc

在此期间我正在研究Spring Framework。

现在我正在研究spring Bean生命周期,特别是关于bean的inizialitazion广告销毁,阅读本教程:

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

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

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

HelloWorld.java 类中,我有两个bean inizialitazion的方法: init()(在创建bean之后由框架调用)和bean清理:* destroy()(在应用程序结束时bean销毁之前由框架调用)

好的,很清楚,这两个方法是在bean生命周期的两个特定时刻由框架自动调用的,因为我已经通过 init-method 在应用程序上下文xml文件中为这个bean进行了delcared 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>

这对我来说很明显。

我有一些问题要理解的是与上一篇文章的开头有关,事实上它表明要有inizialization方法,我的bean必须实现 InitializingBean 接口和代码它的方法叫做: afterPropertiesSet()

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

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

TNX

3 个答案:

答案 0 :(得分: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定义是实现此类接口的替代

答案 1 :(得分:3)

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

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

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

3)你可以实现InitializingBean / DisposableBean接口,即使没有在xml config中定义init-method / destroy-method,Spring也会调用它们

4)您可以使用@PostConstruct / @PreDestroy注释在bean中注释方法,并在xml config中启用<context:annotation-config />

答案 2 :(得分:-2)

虽然今天的一代包括快速行动,但是很多人没有强大的心态阻止你实现自己的梦想