spring回顾-bean标签详解
温馨提示:
本文最后更新于 2022年06月19日,已超过 7 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
bean的基本配置
<bean id="" class=""/>
思考:
- class属性能不能写接口如
BookDao
的类全名呢?
答案肯定是不行,因为接口是没办法创建对象的。
- 前面提过为bean设置id时,id必须唯一,但是如果由于命名习惯而产生了分歧后,该如何解决?
bean的别名配置
bean的别名配置可以使用name属性进行配置,里面可以书写很多的别名,每一个别名之间使用,隔开,并且ref属性的引用也可以使用别名
bean的作用范围配置
验证ioc容器中的bean对象是否是单列的
什么称之为单列呢
在我们获取多个bean对象的时候后bean对象是否是引用的同一个地址,如果是同一个地址则被称之为单列模式,否则就不是
在bean标签的属性当中,可以使用scope属性来标识一个bean对象的获取是否是单列
singleton
默认为单例prototype
为非单例
单列模式和非单列模式的区别
介绍完scope
属性以后,我们来思考几个问题:
- 为什么bean默认为单例?
- bean为单例的意思是在Spring的IOC容器中只会有该类的一个对象
- bean对象只有一个就避免了对象的频繁创建与销毁,达到了bean对象的复用,性能高
- bean在容器中是单例的,会不会产生线程安全问题?
- 如果对象是有状态对象,即该对象有成员变量可以用来存储数据的,
- 因为所有请求线程共用一个bean对象,所以会存在线程安全问题。
- 如果对象是无状态对象,即该对象没有成员变量没有进行数据存储的,
- 因方法中的局部变量在方法调用完成后会被销毁,所以不会存在线程安全问题。
- 哪些bean对象适合交给容器进行管理?
- 表现层对象
- 业务层对象
- 数据层对象
- 工具对象
- 哪些bean对象不适合交给容器进行管理?
- 封装实例的域对象,因为会引发线程安全问题,所以不适合。
正文到此结束
- 本文标签: Spring Java
- 本文链接: https://www.rlfit.cn/article/40
- 版权声明: 本文由若离风原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权