根据用户登录控制spring bean范围

问题描述

我想在新用户登录时创建一个新 bean,以便在整个用户会话中缓存它。目前我使用范围作为原型,它为每个请求创建一个新的 bean。有没有办法根据用户名来控制bean的作用域?

我的 bean 具有执行一些递归操作的方法。现在由于我的 bean 是原型,这些递归调用使我的应用程序变慢。我不想要单例 bean,因为这些递归调用的结果取决于用户名用户访问权限。

解决方法

您可以使用会话范围。

例如:

@豆

@SessionScope (或@Scope(value = "session"))

您可以在以下位置检查所有可用范围: https://docs.spring.io/spring-framework/docs/3.0.0.M3/reference/html/ch04s04.html