java - 关于Spring bean初始化和销毁​​的一些疑惑

标签 java spring spring-mvc

这段时间我正在学习Spring框架。

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

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

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

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

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

好吧,这很清楚,这两个方法是由框架在 bean 生命周期的两个特定时刻自动调用的,因为我已经通过 init-method 在应用程序上下文 xml 文件中为此 bean 声明了它 和 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接口(interface)和代码它的方法称为:afterPropertiesSet()

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

好吧...那么...为什么在文章中首先表明我的bean必须实现这些接口(interface),然后在示例中不执行此操作,而是简单地声明 init 和 destroy 方法的存在XML 配置并在不实现任何接口(interface)的类中实现它?

Tnx

最佳答案

对于基于 XML 的配置元数据,您可以使用 init-method 属性来指定具有 void 无参数签名的方法的名称

XML 定义是实现此类接口(interface)的替代方案

关于java - 关于Spring bean初始化和销毁​​的一些疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14520912/

相关文章:

java - 频繁发送到spring-websocket session : lost in transit

java - Weblogic 12c 上的 Arquillian

java - 验证不适用于 persist

java - 我可以在访问前一个 jPanel 的同时添加同一 jPanel 的全新实例吗?

java - 如何从 Spring JdbcTemplate 连接到受密码保护的 MS Access 数据库?

java - Spring boot docker线程中出现异常 "main"java.lang.NoClassDefFoundError : org/springframework/boot/SpringApplication

java - 为什么学生没有被编辑

java - 当我将样式表链接到 Thymeleaf 页面时,为什么 Spring Boot 会掉线?

java - 如何将 String ArrayList 更改为 Double ArrayList?

swing - GridBagLayout 多按钮+边框