Java 如何在WebFlux服务中访问WebSession?
我使用的是SpringWebFlux,我想在一些不同的类中为一个请求使用它。例如:应用程序有一些分析服务。客户希望运行其中一些。他们发送一个请求,然后在控制器中运行如下操作:Java 如何在WebFlux服务中访问WebSession?,java,reactive-programming,spring-webflux,spring-session,Java,Reactive Programming,Spring Webflux,Spring Session,我使用的是SpringWebFlux,我想在一些不同的类中为一个请求使用它。例如:应用程序有一些分析服务。客户希望运行其中一些。他们发送一个请求,然后在控制器中运行如下操作: classService1.analyze() classService2.analyze() classService3.analyze() 现在,在类服务中,它们可能需要一些WebSession信息(例如客户端Ip、客户端会话属性等)。除了下面的示例之外,没有其他方法可以做到这一点 @RestController c
classService1.analyze()
classService2.analyze()
classService3.analyze()
现在,在类服务中,它们可能需要一些WebSession信息(例如客户端Ip、客户端会话属性等)。除了下面的示例之外,没有其他方法可以做到这一点
@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发送到服务的最佳方式是什么?该文档提供了对使用Redis的WebSession的支持,但如果您不想承担维护Redis群集的开销。您可以将内存会话集群与Hazelcast一起使用
配置spring会话以使用Hazelcast映射
确保添加@EnableSpringWebSession。
创建一个ReactiveSessionRepository bean,它包装Hazelcast实例的映射
@EnableSpringWebSession
public class SessionConfig {
@Autowired
HazelcastInstance hazelcastInstance;
@Bean
public ReactiveSessionRepository reactiveSessionRepository() {
final IMap<String, Session> map = hazelcastInstance.getMap(MAP_CONFIG_NAME);
return new ReactiveMapSessionRepository(map);
}
}
@EnableSpringWebSession
公共类会话配置{
@自动连线
榛卡斯特实例榛卡斯特实例;
@豆子
公共ReactiveSessionRepository ReactiveSessionRepository(){
最终的IMap映射=hazelcastInstance.getMap(映射配置名称);
返回新的ReactiveMapSessionRepository(map);
}
}
并在SpringBoot使用它自动配置Hazelcast实例时创建一个配置bean