在此期间我正在研究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
答案 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)
虽然今天的一代包括快速行动,但是很多人没有强大的心态阻止你实现自己的梦想