Spring配置使用之Bean生命周期详解
Spring中的Bean的生命周期,指的是Bean从创建到销毁的过程。
下面来探究下几个有关Bean生命周期配置的属性。
lazy-init
lazy-init表示延迟加载Bean,默认在SpringIoC容器初始化时会实例化所有在配置文件定义的Bean,若启用了lazy-init则在调用Bean时才会去创建Bean。
定义Bean:
publicclassAnimals{ publicAnimals(){ System.out.println("creating..."); } }
配置方式如下(以xml文件为例):
调用验证:
//创建容器 Stringlocation=... ApplicationContextfactory=newFileSystemXmlApplicationContext(location); //输出结果: //若启用了lazy-init则输出creating...,否则无打印信息。
depends-on
depends-on是指指定Bean初始化及销毁时的顺序。该属性可以用于标识当前Bean初始化之前显式地强制一个或多个Bean被初始化。若指定Bean的作用域都是singleton时,表示该属性指定的Bean要在当前Bean销毁之前被销毁。
在Bean中定义:
publicclassBeanOne{ publicBeanOne(){ System.out.println("BeanOne..."); } } publicclassBeanTwo{ publicBeanTwon(){ System.out.println("BeanTwo..."); } }
在配置文件中定义:
调用验证:
Stringlocation=... ApplicationContextfactory=newFileSystemXmlApplicationContext(location); BeanOnebeanOne=(BeanOne)factory.getBean("beanOne"); //输出结果: //BeanTwo... //BeanOne...
观察输出结果,调用BeanOne时,Spring会自动创建BeanTwo实例。
init-method&destory-method
当实例化一个Bean时,可能需要执行一个初始化操作来确保该Bean可用状态。同样地,当不需要Bean时,将其从容器中移除时,可能还需要按顺序执行一些清楚工作。
为Bean定义初始化和销毁操作,需要使用init-method和destory-method属性。
定义Bean
//进入房间后要开灯,离开房间后要关灯 publicclassRoom{ publicRoom(){ System.out.println("enterroom..."); } publicvoidturnOnLights(){ System.out.println("turnon..."); } publicvoidturnOffLights(){ System.out.println("turnoff..."); } }
在Xml文件中配置
在Ioc容器中实例化该Bean,在销毁它
//实例化Bean FileSystemXmlApplicationContextcontext=... //销毁Bean context.registerShutdownHook(); //输出内容: //enterroom... //turnon... //turnoff...
以上就是本文关于Spring配置使用之Bean生命周期详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Spring中bean的继承与抽象代码示例、spring中的FactoryBean代码示例等,有什么问题,欢迎大家留言交流讨论。感谢朋友们对毛票票网站的支持!