我想到了 :)
这有点像开发人员错误,但这也是Spring的荒谬默认行为。我有一个名为SessionBean的JSF托管Bean,我声明为@SessionScope
。当您将JSF和Spring集成在一起时,JSF依赖项注入与Spring依赖项注入发生冲突,因此Spring重写了处理该问题的JSF模块,而只包装了Spring DI。因此,当我将JSF ManagedBean声明为Session Scoped时,我还必须为其添加@Controller
注释,以便也将其识别为Spring Bean。
事实证明,Spring不了解JSF@RequestScoped
和@SessionScoped
注释。Spring有其自己的注释,简称为@Scope(value = "request|session|singleton?|etc...")
。
由于Spring无法识别我设置的JSF范围,因此将默认创建的Bean作为SINGLETON对待。
因此,每次有人登录时,它都会覆盖我用来缓存从身份验证主体中提取的已登录用户的属性。然后,做任何事情的每个人都以不同的用户身份登录。
spring的美好,顺便 警告 您配置错误的豆子。
感谢大家的帮助,希望这对将来的访问者有所帮助!