我正在使用spring-webflux,并且我想在一个请求的某些不同类中使用WebSession。例如:应用程序具有一些分析服务。客户想要运行其中的一些。他们发送一个请求,然后在控制器中运行类似于以下内容的
:classService1.analyze()
classService2.analyze()
classService3.analyze()
现在,在类服务中,他们可能需要一些WebSession信息(例如客户端IP,客户端会话属性和.etc)。除了下面的示例,没有其他方法可以做到这一点吗?
@RestController
class AnalyzeController() {
@Autowired
private ClassService1 classService1
// Other injected class services
@PostMapping("/analyze")
public void analyze(WebSession webSession){
classService1.analyze(webSession)
classService2.analyze(webSession)
// ...
}
}
我不想获取webSession表单控制器,然后将其发送到我的所有服务,我希望有可能在我的服务中注入WebSession(例如@Autowired WebSession webSession
),或者我想在AOP中使用WebSession。可能吗?如果是,如何?如果没有,将WebSession发送到服务的最佳方法是什么?
答案 0 :(得分:0)
https://docs.spring.io/spring-session/docs/current/reference/html5/#websession文档提供了对带有Redis的WebSession的支持,但是如果您不想维护Redis集群的开销。您可以将内存中会话群集与Hazelcast一起使用。
配置春季会议以使用Hazelcast映射 确保添加@EnableSpringWebSession。 创建一个ReactiveSessionRepository Bean,用于包装Hazelcast实例的地图。
{{1}}
并创建一个Config bean,因为Spring Boot使用它来自动配置Hazelcast实例 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-hazelcast.html