Spring的Bean:Bean的生命周期(包括实践)
目录
生命周期
观察生命周期的方式
生命周期实践(含代码)
生命周期
什么是生命周期?
答:从创建到消亡的整个过程就是生命周期。
观察生命周期的方式
在创建前,做一些事情;在结束前,做一些事情。在Bean的配置文件中绑定初始化方法和销毁方法。
销毁方法需要注意的点:在JVM退出的时候,没有关闭IoC容器,就不会执行销毁方法;这个时候需要告诉JVM关闭IoC容器
关闭IoC容器的方法有两种:
1. close方法暴力关闭
2. 设置IoC容器关闭钩子,提醒JVM关闭IoC容器
生命周期实践(含代码)
<?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="cat" class="org.example.package2.Cat" init-method="init" destroy-method="destory"/>
<bean id="dog" class="org.example.package2.Dog"/>
<bean id="animalSet" name="abc1234" class="org.example.AnimalSet">
<property name="animal1" ref="cat"></property>
<property name="animal2" ref="cat"></property>
</bean>
</beans>
package org.example;
import org.example.package2.Cat;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class LifeBean {
public static void main(String[] args) {
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationConfig.xml");
Cat cat = (Cat) ctx.getBean("cat");
cat.sound();
ctx.close();
}
}
package org.example.package2;
import org.example.package1.Animal;
public class Cat implements Animal{
public Cat() {
System.out.println("Cat Constructor.....");
}
@Override
public void sound(){
System.out.println("cat sound");
}
public void init(){
System.out.println("cat init Method.....");
}
public void destory(){
System.out.println("cat destory Method.....");
}
}
package org.example.package1;
public interface Animal {
void sound();
}