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