如何在整个用户会话期间缓存当前用户实例,以便我的服务可以自由访问它而无需转到用户访问服务,然后一遍又一遍地从数据库中获取用户数据。
我知道Spring支持scoped bean的概念(每个会话,每个请求等),但老实说,我从来没有真正使用过它,所以如果有人能给我指路,我会非常感激。
我非常希望这种会话范围是线程安全的。
答案 0 :(得分:2)
Spring并不是解决所有问题的方法。 HttpSession是您所需要的。并session scoping is not thread-safe。
答案 1 :(得分:0)
如果使用Spring Security,则可以考虑使用增强的UsersDetails对象。
- 你只是(因为你只知道你的用例)必须决定这是否有用。
回答有关Session Scoped Spring Objects的问题:
有关示例,请参阅Spring Reference Chapter 3.11.4.4 Specifying bean scope和第3.4章。范围概述的Bean范围(关注该章节中链接的链接是错误的)。
请注意,Spring Session Scoped Beans需要听众:
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
IHO:这取决于你将对会话作用域数据做什么,你是否应该直接使用Spring Session Beans或HTTP Session。例如,如果您需要服务层内不同位置的数据,那么HTTP会话可能是一个不太好的解决方案。