Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在会话作用域变量中缓存当前用户数据_Java_Spring_Session Scope - Fatal编程技术网

Java 在会话作用域变量中缓存当前用户数据

Java 在会话作用域变量中缓存当前用户数据,java,spring,session-scope,Java,Spring,Session Scope,如何在整个用户会话期间缓存当前用户实例,以便我的服务可以自由访问它,而无需转到用户访问服务,然后反复从数据库获取用户数据 我知道Spring支持作用域bean的概念(每个会话、每个请求等),但老实说,我从未实际使用过它,所以如果有人能为我指路,我将非常感激 我非常希望这种会话作用域是线程安全的。Spring不是万能的解决方案。这就是你需要的。如果你使用Spring Security,那么你可以考虑使用增强的UsSersDebug对象。 --你只需要(因为你只知道你的用例)决定这是否有用 要回答

如何在整个用户会话期间缓存当前用户实例,以便我的服务可以自由访问它,而无需转到用户访问服务,然后反复从数据库获取用户数据

我知道Spring支持作用域bean的概念(每个会话、每个请求等),但老实说,我从未实际使用过它,所以如果有人能为我指路,我将非常感激


我非常希望这种会话作用域是线程安全的。

Spring不是万能的解决方案。这就是你需要的。如果你使用Spring Security,那么你可以考虑使用增强的UsSersDebug对象。

--你只需要(因为你只知道你的用例)决定这是否有用


要回答有关会话范围的Spring对象的问题,请执行以下操作:

有关示例,请参见第3.4章。Bean作用域的概述(请注意,该章中指向会话的链接是错误的)

请注意,Spring会话范围的bean需要侦听器:

<listener>
   <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
 </listener>

org.springframework.web.context.request.RequestContextListener

IHO:这取决于您将如何处理会话范围的数据,您是应该使用Spring会话bean还是直接使用HTTP会话。例如,如果您需要服务层中不同位置的数据,那么HTTP会话可能不是一个很好的解决方案。

Spring Fanciliate在Spring控制器中检索会话,并且还支持Oh,yeah,这实际上不是一个坏主意。您可以将
SynchronizedMap
作为会话属性,以使数据结构成为线程safe@JohanSjöberg我知道spring提供了这种机制,但是OP应该首先从基础开始。@user802232,如果直接使用
HttpSession
,您的操作与您的操作完全相同。如果一个方法需要一个值,那么该方法应该得到该值。如果您使用hibernate,那么最好使用二级缓存来实现这类功能。这样,缓存与应用程序逻辑保持分离。