通过各种查询得值Spring controller默认下是单例,也就是说这个类的对象在容器中只有一个,那么如果里面有私有变量可能会随不同的人访问出现值得改变,导致错误。所以尽可能不要或者禁止在controller中定义变量,以上我的理解没错吧?那么还有一个问题困扰我,就是在controller中注入的service对象,他又是多例还是单例呢,我的理解是注入过程根据注解,在项目启动结束,Spring已经为controller创建好了service,所以我认为是单例。不知道对不对。如果是单例那么,在多用户使用时,是不是需要加锁呢,不然是不是也导致线程不安全呢?希望真正懂得为我解答一下。在下十分感激。
spring mvc没用过,但就spring而言,bean是在初始化完成后就已经加载完毕(lazy load除外),是否单例取决于配置。
单例中对象是最好不要包含状态信息,比如对象的会被使用的字段。
在一般场景下,普通的锁是无法解决并发的问题,如果需要锁需要换用分布式锁。
刚被坑了一次。controller里面注入的service也是默认单例,所以不要在service里面声明变量,这种变量是线程不安全的。