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