Spring的Controller是单例还是多例?怎么保证并发安全

答案

Controller默认是单例,不要使用非静态变量(成员变量),否则会发生逻辑混乱。正因为单例所以不是线程安全的

 解决方案

1、不要在Controller中定义成员变量

2、万一必须要定义一个非静态成员变量时候,则通过注解@Scope("prototype"),将其设置为多例

3、在Controller中使用ThreadLocal变量

补充

spring bean 有5个作用域

singleton,prototype,request,session,global session

 

 

 

转载:https://mp.weixin.qq.com/s/PNmlpv786kgk5Pyhr5XSsw

 

  

posted @ 2021-12-08 17:26  厚我  阅读(101)  评论(0编辑  收藏  举报