Bean
IOC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean
文章目录
- Bean
- bean配置
- 配置别名
- Bean作用范围配置
- bean的实例化
- Bean的生命周期
bean配置
名称:bean
类型:标签
所属:beans标签
功能:定义Spring核心容器管理的对象
格式:
属性列表:
id:bean的id,使用容器可以通过id值获取对应的bean,在一个容器中id是唯一的
class:bean的类型,及配置的bean的全路径类名
配置别名
名称:name
类型:属性
所属:bean标签
功能:定义bean的别名,可定义多个,使用逗号(,)分号(;)空格( )进行分隔
注意事项:获取bean无论是通过id还是name获取,如果无法获取到,将抛出异常NoSuchBeanDefinitionExption异常
Bean作用范围配置
名称:scope
类型:属性
所属:bean标签
功能:定义bean的作用范围:
singleton:单例(默认的)
prototype:非单例
scope的取值不仅仅只有singleton和prototype,还有request、session、application、 websocket ,表示创建出的对象放置在web容器(tomcat)对应的位置。比如:request表示保存到request域中。
一般单例可以满足日常开发
bean的实例化
bean本质上就是对象,创建bean使用构造方法完成
1.构造方法方式
BookDaoImpl实现类
applicationContext.xml配置
测试类
注意:无参构造方法如果不存在,将抛出异常
2.静态工厂方式
EatDaoImpl实现类
工厂类
applicationContext.xml配置
测试类
3.实例工厂方式,变种为实现FactoryBean接口
UserDao实现类
工厂类:
applicationContext.xml配置
测试类
UserFactoryBean类
applicationContext.xml配置
Bean的生命周期
生命周期:从创建到消亡的完整过程
bean生命周期:bean从创建到销毁的整体过程
bean生命周期控制:在bean创建后到销毁前做一些事情
Bean销毁时机:
容器关闭前触发bean的销毁
关闭容器方式:
手动关闭容器:ConfigurableApplicationContext
接口close()
操作
注册关闭钩子,在虚拟机退出前先关闭容器再退出虚拟机:ConfigurableApplicationContext
接口registerShutdownHook()
操作