Java 如何在WebFlux服务中访问WebSession?

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

我使用的是SpringWebFlux,我想在一些不同的类中为一个请求使用它。例如:应用程序有一些分析服务。客户希望运行其中一些。他们发送一个请求,然后在控制器中运行如下操作:

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