bean配置
bean基础配置
bean别名配置
**注意事项:**获取bean无论是通过id还是name获取,如果无法获取到,将抛出异常NoSuchBeanDefinitionException(NoSuchBeanDefinitionException:No bean named ‘bookServiceImpl’ available)
bean作用范围配置
bean作用范围说明
- 为什么bean默认为单例?
- 适合交给容器进行管理的bean
- 表现层对象
- 业务层对象
- 数据层对象
- 工具对象
- 不适合交给容器进行管理的bean
- 封装实体的域对象
bean实例化
- bean本质上就是对象,创建bean使用构造方法完成
实例化bean的三种方式
第一种:构造方法(常用)
-
提供可访问的构造方法
-
配置
- 无参构造方法如果不存在,将抛出异常BeanCreationException
第二种:静态工厂(了解)
-
静态工厂
-
配置
第三种:实例工厂(了解)
- 实例工厂
- 配置
第四种:FactoryBean
- FactoryBean
- 配置
bean生命周期
- 生命周期:从创建到消亡的完整过程
- bean生命周期:bean从创建到销毁的整体过程
- bean生命周期控制:在bean创建后到销毁前做一些事情
bean生命周期控制
- 提供生命周期控制方法
- 配置生命周期控制方法
接口控制(了解)
- 实现InitializingBean,DisposableBean接口
bean生命周期
- 初始化容器
- 创建对象(内存分配)
- 执行构造方法
- 执行属性注入(set操作)
- 执行bean初始化方法
- 使用bean
- 执行业务操作
- 关闭/销毁容器
- 执行bean销毁方法
bean销毁时机
- 容器关闭前触发bean的销毁
- 关闭容器方式:
- 手工关闭容器
- ConfigurableApplicationContext接口close()操作
- 注册关闭钩子,在虚拟机退出前先关闭容器再退出虚拟机
- ConfigurableApplicationContext接口registerShutdownHook()操作
- 手工关闭容器