4-2 bean scope的实际应用

说明:利用代码说明scope singleton 与 prototype的区别

 创建新工程

 创建用户dao

 增加默认构造方法

默认为单例模式

 单例模式有一个特点就是在ioc初始化的过程中就会将这个对象进行创建

验证一下

运行

扫描二维码关注公众号,回复: 14395567 查看本文章

 

 参照一下多列

 没有输出

 用一个对象来保存

 在调用getBean的时候产生了新对象

多放几个

 从这里就能了解单列和多列表现上的区别了

内容再延伸一下

 

 打开xml进行配置

 在UserService上也增加构造方法

 

 当前配置在ioc容器初始化的过程中会产生几个对象呢?

答案是两个

因为使用的是单列所以当然会创建userService对象,除此以外又去引用了

这个对象 而userDao在文件初始化的过程中是不存在的,于是ioc容器也同样userDao的实例化

运行

 

 默认情况下bean的顺序是按照书写的顺序创建的,但是在实际运行中为什么是userService先创建?清除prototype

 为什么取消顺序正确了呢

增加prototype后第一个bean是不会在ioc容器初始化的时候自动的实例化,在实例化UserService的过程中ioc容器他需要一个userDao的实例,于是他再去创建userDao对象,也就是说当我们的某一个属性去关联到一个多例对象的时候,同样会触发实例化对象的操作

都加上prototype

 

 在绝大多数场景下dao类service类乃至后面学习的springmvc的控制器类都是单例的。如果一个属性是恒定不变的就可以使用单例如果不断地变化就要使用多例了

猜你喜欢

转载自blog.csdn.net/lonelyneet/article/details/125863997
4-2