当一个 bean 被实例化时,它可能需要执行一些初始化使它转换成可用状态。当bean不再需要,并且从容器中移除时,需要做一些清除工作。为了定义安装和拆卸一个 bean,我们只要声明init-method 和/或 destroy-method 参数。init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法。同样,destroy-method 指定一个方法,只有从容器中移除 bean 之后,才能调用该方法。

编写HelloWorld.java

 package com.example.spring;

 public class HelloWorld {
private String message;
public void setMessage(String message){
this.message = message;
} public void getMessage(){
System.out.println("Your Message : " + message);
}
//定义初始化方法
public void init(){
System.out.println("Bean is going through init.");
}
//定义销毁方法
public void destroy(){
System.out.println("Bean will destroy now.");
}
}

编写Beans.xml

 <?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"> <bean id="helloWorld"
class="com.example.spring.HelloWorld"
init-method="init" destroy-method="destroy">
<property name="message" value="Hello World"></property>
</bean>
</beans>

编写Application.java

 package com.example.spring;

 import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; public class Application {
public static void main(String[] args) {
//bean配置文件所在位置 D:\\IdeaProjects\\spring\\src\\Beans.xml
//使用AbstractApplicationContext容器
AbstractApplicationContext context = new ClassPathXmlApplicationContext("file:D:\\IdeaProjects\\spring\\src\\Beans.xml");
HelloWorld obj = (HelloWorld)context.getBean("helloWorld");
obj.getMessage();
//registerShutdownHook关闭hook,确保正常关闭,并调用destroy方法
context.registerShutdownHook();
}
}

运行输出

Bean is going through init.
Your Message : Hello World!
Bean will destroy now.

默认的初始化和销毁方法

如果你有太多具有相同名称的初始化或者销毁方法的 Bean,那么你不需要在每一个 bean 上声明初始化方法和销毁方法。框架使用 元素中的 default-init-method 和 default-destroy-method 属性提供了灵活地配置这种情况,如下所示:

<?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="init"
default-destroy-method="destroy"
> <bean id="helloWorld"
class="com.example.spring.HelloWorld">
<property name="message" value="Hello World"></property>
</bean>
</beans>

运行输出

Bean is going through init.
Your Message : Hello World!
Bean will destroy now.

最新文章

  1. (原创)JAVA多线程三锁
  2. Python socket (多线程)
  3. 51nod 1434 理解lcm
  4. android开发时gen和bin目录的SVN管理(转)
  5. Laravel 5 服务的注册和使用
  6. 博文推荐】Javascript中bind、call、apply函数用法
  7. 2140: 稳定婚姻 - BZOJ
  8. C++ Variables and Basic Types Notes
  9. PHP学习之[第05讲]PHP5.4 循环结构、系统函数和自定义函数
  10. C# 解析js方法,并调用js方法
  11. fs.rename可以重新写入文件
  12. SQL SERVER 2000 数据恢复(分离数据库+附加数据库)
  13. 微信群之Java技术红包问答
  14. Qt 如何使用 lambda 表达式连接信号和槽?
  15. HttpContext未null处理
  16. mybatis sql in not in的使用
  17. MongoDB常用操作--简介
  18. MFC_CFileDialog_选择文件夹
  19. PowerShell Gallery
  20. think in java 读书笔记

热门文章

  1. 工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01
  2. 通俗易懂理解Linux文件权限修改chmod命令
  3. TensorFlow-GPU+cuda8+cudnn6+anaconda安装遇到的版本错误
  4. windows 与 mac socket通信
  5. vue新建移动端项目模板
  6. 自己的mongodb的CRUD封装
  7. Promise的一点感悟~
  8. java异常处理——finally相关
  9. 用matplotlib.pyplot画简单的折线图,直方图,散点图
  10. C 语言 计算