Java如何在Spring中默认初始化方法和destroy方法?

当上下文定义中的许多bean具有相同的初始化和销毁方法名称时,可以在元素的属性中定义default-init-method和。default-destroy-methodbeans

这样,您就不必定义个人init-method和destroy-method每一个你的豆类。当豆不提供匹配的定义的名称,该方法default-init-method还是default-destroy-method什么都不会发生这些豆子。

让我们在下面看一个示例代码。冷杉是我们的简单豆,AutoEngine豆。

package org.nhooo.example.spring.init;

public class AutoEngine {
    public void initialize() {
        System.out.println("AutoEngine.initialize");
    }

    public void destroy() {
        System.out.println("AutoEngine.destroy");
    }
}

然后我们定义我们的Spring配置文件。您可以看到元素的属性中有default-init-method和。default-destroy-methodbeans

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
       default-init-method="initialize" default-destroy-method="destroy">

    <bean id="engine"/>

</beans>

最后是一个运行我们的演示的小程序。

package org.nhooo.example.spring.init;

import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class DefaultInitDestroyDemo {
    public static void main(String[] args) {
        ConfigurableApplicationContext context =
                new ClassPathXmlApplicationContext("default-init-destroy.xml");

        AutoEngine engine = (AutoEngine) context.getBean("engine");

        // context.close将从容器中删除bean。
        // 这将调用我们的bean destroy方法。
        context.close();
    }
}

运行此示例时,您将在屏幕上打印以下输出:

AutoEngine.initialize
AutoEngine.destroy