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