spring的controller是单例还是多例,怎么保证并发的安全
在没有@Scope的注释下,Spring默认是单例的。那么如果不小心在类中定义了类变量,那么这个类变量是被所有请求共享的,这可能会造成多个请求修改该变量的值,出现与预期结果不符合的异常。如果不希望出现这种状况,只需要在类上添加注解@Scope("prototype")即可,这样每次请求调用的类都是重新生成的(每次生成会影响效率),在这种情况下可以使用ThreadLocal来保存类变量,将类变量保存在线程的变量域中,让不同的请求隔离开来。