Spring 容器是通过单例模式创建 Bean 对象的,也就是说,
默认情况下,通过调用
ac.getBean("mybean")方法获得的对象都是同一个 mybean 对象
使用单例模式有风险,风险在于多线程并发访问时会有一些状况。
那么如何取消容器默认单例模式创建对象?
14) 修改
applicationContext.xml
设置创建 bean 的模式为原型模式(prototype)即可以
代码片段
<bean
id="mybean"
lazy-init="true"
scope="prototype"
class="tarena.demo3.MyBean"></bean>
15)
运行 Test
注意:调用了 2 次 MyBean 的构造方法,说明创建了 2 个对象
scope 属性的取值
在 web(仅限于
web 项目)环境中,还可以设置所创建的 bean 对象的生命周期和
request、session
?
request 表示 bean 对象生命周期和 request 生命周期相同
?
session 同 session
? global
session 相当于 application
? single
?
prototype
相关文章
- 12-01spring读取classpath目录下的配置文件通过表达式去注入属性值.txt
- 12-01003-spring框架-IOC容器_02_其他类型属性的注入
- 12-01spring bean的scope
- 12-01Spring——自定义属性编辑器+Bean的生存范围+Bean的生命周期
- 12-01SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
- 12-01Spring和Spring Boot的属性
- 12-01Spring5复习:创建字段属性Formatter工厂的注解(自定义字段格式化注解)
- 12-01使用Spring的命名空间p装配属性-摘自《Spring实战(第3版)》
- 12-01【小家Spring】老项目迁移问题:@ImportResource导入的xml配置里的Bean能够使用@PropertySource导入的属性值吗?
- 12-01Spring揭秘 读书笔记 三 bean的scope与FactoryBean