本文主要是介绍spring框架的singleton和prototype在高并发的表现,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
spring的controller、service、dao都是默认singleton的,在singleton的模式下spring只会生成一个对象来处理并发的请求,例如:
@Controller @RequestMapping("test") public class Test {private int num = 0;@RequestMapping("test")@ResponseBodypublic int test(Model model){return num++;} }
然后使用python模拟请求,结果可以看到多个相同的数字,比如0,1,2,2,3,4,5...如果在注解上标注@Scope("prototype"),那么spring将在每一个请求来后生成一个实例,结果为0,0,0,0,0,0...
有时我在资料中看到spring用ThreadLocal来解决多线程并发问题,但明显没有用在这些组件上。
明确提到使用了ThreadLocal的组件是事务管理,比如数据库的事务管理。
这篇关于spring框架的singleton和prototype在高并发的表现的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!