Spring 如何保证 Controller 并发的安全?

Spring 多线程请求过来调用的Controller对象都是一个,而不是一个请求过来就创建一个Controller对象。

并发的安全?
原因就在于Controller对象是单例的,那么如果不小心在类中定义了类变量,那么这个类变量是被所有请求共享的,这可能会造成多个请求修改该变量的值,出现与预期结果不符合的异常

那有没有办法让Controller不以单例而以每次请求都重新创建的形式存在呢?
答案是当然可以,只需要在类上添加注解@Scope("prototype")即可,这样每次请求调用的类都是重新生成的(每次生成会影响效率)

虽然这样可以解决问题,但增加了时间成本,总让人不爽,还有其他方法么?答案是肯定的!

使用ThreadLocal来保存类变量,将类变量保存在线程的变量域中,让不同的请求隔离开来。


技术讨论 & 疑问建议 & 个人博客

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议,转载请注明出处!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,323评论 19 139
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,430评论 11 349
  • 华为和小米这两年的快速崛起与它们推出的千元机占据国内市场大量份额有很大关系,三星在国外巩固自家的市场份额后,一季度...
    969227e884b9阅读 1,339评论 0 0
  • 在导入的过程中遇到一些问题,记录一一下给需要的小伙伴一些提示,好了开始了。 1:所需的工具Git和Gradle,以...
    平行线阅读 8,727评论 4 7
  • 本来以为是黎明前的黑暗,但现在越来越有漫漫长夜的味道了。 我感觉自己应该写点什么了。 作为投资区块链近一年的小朋友...
    皮皮鲁鲁西西_35e7阅读 3,496评论 0 1