为了定义安装和拆卸一个 bean,我们只要声明带有 init-method 和/或 destroy-method 参数的 。
init-method 属性指定一个方法,在实例化 bean 时,立即调用该方法。同样,destroy-method 指定一个方法,只有从容器中移除 bean 之后,才能调用该方法。
Bean的生命周期可以表达为:Bean的定义——Bean的初始化——Bean的使用——Bean的销毁
案例代码:
Person.java
package com.baklib.custom;public class Person {private String name;private String carType;public String getName() {return name;}public void setName(String name) {this.name = name;}public String getCarType() {return carType;}public void setCarType(String carType) {this.carType = carType;}public void buyCar(){System.out.println(this.getName()+"购买了"+this.getCarType()+"!");}// Bean 的初始化方法public void init(){System.out.println("进入4S店");}// Bean 的销毁方法public void destory(){System.out.println("离开4S店");}}
MainApp.java
package com.baklib.custom;import org.springframework.context.support.AbstractApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainApp {public static void main(String[] args) {AbstractApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");Person person = (Person) context.getBean("person");person.buyCar();context.registerShutdownHook();}}
配置文件 Beans.java
<?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="person" class="com.baklib.custom.Person" init-method="init" destroy-method="destory"><property name="name" value="张三" /><property name="carType" value="小轿车" /></bean></beans>
编写完以上代码,就可以运行这个程序,运行结束后,可以在控制台看到下面的信息
进入4S店张三购买了小轿车!离开4S店
默认的初始化和销毁方法
当有多个具有相同名称的初始化或者销毁方法的 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.xsddefault-init-method="init"default-destroy-method="destroy"><bean name="..." class="...">...</bean><bean name="..." class="...">...</bean><bean name="..." class="...">...</bean></beans>
