Bean的初始化过程已经被Spring完全包装起来了,无法人工干预。
Spring预留了两个回调方法的入口
回调方法:定义出来完成一定的功能,提供给回调者/服务器/上层容器调用的方法,叫做回调方法。
Bean类
public class Bean1 {
public Bean1() {
//System.out.println("bean1...构造方法");
}
public void show(){
System.out.println("bean1...方法");
}
//定义一个方法,在Bean创建时,执行
public void init(){
System.out.println("打印init");
}
//定义一个方法,在Bean销毁时,执行
public void destory(){
System.out.println("打印销毁");
}
}
调用
public static void main(String[] args) {
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext(
"applicatioContext.xml");
ac.getBean("bean4");
ac.close();
}
配置文件
<!-- bean的生命周期控制 -->
<!-- init-method:指定创建bean时对应的执行方法 -->
<!-- destroy-method:指定销毁Bean时对应的执行方法 -->
<bean id="bean4" class="com.hao947.bean.Bean1"
init-method="init"
destroy-method="destory"
></bean>
注意:
Bean的创建时在新建该对象时,完成,Bean的销毁是在容器被销毁或关闭之前完成
关闭容器:使用ClassPathXmlApplicationContext对象来完成 ctx.close()
Bean的销毁只能针对于单例对象,而不能应用于非单例对象
非单例的Bean对象的回收交由JVM完成——GC