spring单例和原型模式(24K程序员spring的controller是单例还是多例)
计算机软件、编程、Java开发、spring、程序员
吐槽面试官:springMVC的controller是单例还是多例
程序员:多例
面试官:你可以马上回家等消息了
准备- springboot
- springmvc
- springbean作用域的单例(默认)、多例
- 单例bean声明成员变量是线程不安全的(别搞反了)
配置bean,一个默认(单例),一个多例
默认吧controller的作用域去掉
运行结果
http://localhost:8080/check
调用controller3次方法,两个bean竟然都是一样的
给controller增加作用域多例
运行结果
这下单例bean地址输出一样的
多例bean每次bean输出都不一样了
开发总结
- SpringMVC的controller默认就是单例的
- 如果你bean配置多例了,依赖这个bean的bean也需要多例才行啊(看例子)
- 在单例的bean中切记声明成员属性(如Map、List集合来缓存数据),是线程不安全的
- 1:写线程同步代码 ,缺点可能会导致性能耗损
- 2:如果你是springbean,可以scope="prototype" 每次请求多是新对象,就不存在线程安全 缺点可能会导致性能耗损 <bean id="xxxProcessor" scope="prototype" class="com.xxx.xxxProcessor"/>
- 3:把共享的资源放到方法里,每次方法调用都是新资源(是局部变量嘛) 因此也没线程安全问题了,缺点可能会导致代码复杂度上升
程序员专家请多多喷我,我哪里不对请指出,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com