Spring容器控制bean实例化的方式:生命周期回调
1、首先创建一个名为BeanControl的类,在其中加入init和destroy方法,模拟bean实例化时调用init,根蹯厝求销毁时调用destory。在方法中只需要简单的输出初始化javaBean以及销毁javaBean。再加入无参构造器,以判断bean实例化。
2、在applicationContext.xml中声明bean,id为beanControl,class为其访问路径,为方便输出比对,作用域设置为prototype,添加属性init-method为init,初始化方法为init()方法。
3、创建测试方法,获取spring容器后,直接通过容器获取BeanControl的实例。
4、利用junit进行测试,测试结果控制台输出如下,输出内容依次是构造器的输出,然后是init()方法的输出,证明是实例化的同时调用初始化方法。
5、由于水瑞侮瑜bean对象会随着spring容器关闭而自动销毁,因此可以直接关闭Spring容器来模拟bean销赦觇殒阻毁。首先在applicationContext中bean声明中加入属性destroy-method属性,声明销毁调用方法destroy,由于此属性只对单例生效,因此将作用域scope换成singleton。
6、然后在测试方法中添加关闭Spring容器的代码,如下
7、运行结果如下,在关闭容器时,输出了销毁javaBean的内容,证明此时回调了destroy方法。
8、生命周期的初始化及销毁也可以对所有的bean进行配置,只需要在Beans标签下配置default-init-罪焐芡拂method和default-destroy-method,按照配置bean的顺序,spring容器会搜素bean中的init方法和destroy方法作为全局的方法使用。