一、bean配置
(一)基础配置
(二)别名配置: 起的别名和以前的意思一样
(三)bean的作用范围配置
spring默认创建的bean是单例的,默认创建的是一个
如何创建非单例的:配置
为什么bean默认为单例?
对于spring来说他管理的bean要放在容器中,如果不是单例的,bean数量太多,spring管理的对象主要是可以复用的对象,所以还会从容器中拿,这样效率会高,所以默认创建的是单例的。
适合交给容器进行管理的bean
表现层对象:servlet
业务层对象:service
数据层对象:dao
工具对象
不适合交给容器进行管理的bean:封装实体的域对象【有状态的,会记录成员变量属性值的】
二、bean的实例化
1.构造方法
bean本质上就是对象,容器中管理的对象叫bean,创建bean使用构造方法完成,底层用的是反射
spring创建bean的时候调用的是无参的构造函数
无参构造方法如果不存在,将抛出异常BeanCreationException
查看报错信息:从最后一个报错看
2.静态工厂
了解就行
3.实例工厂
这个了解就行
spring又做了一个升级:(常用)
图中第二个方法就是写对象的类型,把字节码传进去就可以了
三、bean的生命周期
也就是bean对象从创建到销毁的过程
bean生命周期控制:
1.配置方法
bean的销毁时机:
close方法比较暴力,
注册关闭钩子的方法关闭:
2.接口控制
这种方法不用配置init和desroty
去实现接口
初始化容器:
1.创建对象(内存分配),也就是 new做的事情
2.执行构造方法 构造方法执行完之后整个对象创建完
3.执行属性注入( set操作) set操作优先于bean的初始化操作
4.执行bean初始化方法
使用bean :执行业务操作
关闭/销毁容器:执行bean销毁方法 在关闭销毁容器前完成的