为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Webflux 是否在每个请求的单个线程中调用单个 HandlerFunction?

Spring Webflux 是否在每个请求的单个线程中调用单个 HandlerFunction?

qq_笑_17 2021-12-30 16:10:17
考虑下面的代码片段 - 将简单的非线程安全 HashMap 传递给SomeHandlerFunction将在其他自动装配的 bean 中使用它的HashMap 是否安全SomeHandlerFunction?@BeanRouterFunction<ServerResponse> request(SomeHandlerFunction handlerFunction) {    handlerFunction.setSimpleMapProperties(new HashMap());    return route(GET("/dummy"), handlerFunction);}@Serviceclass SomeHandlerFunction implements HandlerFunction {    @Autowired    List<AnotherBeans> anotherBeans;    Mono<T> handle(ServerRequest var1) {        // code...    }}我有点了解 WebFlux 中的多线程模型,但是这个案例让我感到困惑。
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

如果这HashMap是可变的,这不是一个好主意 - 即使使用 Spring MVC 也不行。你应该怎么做?这实际上取决于手头的用例。

如果您尝试设置本地内存缓存,您可以使用像 Caffeine 这样的库,或者只是一个ConcurrentMapCache.

如果您想与该 bean 共享配置键,您可以使用该映射Collections.unmodifiableMap甚至更好地包装该映射,使其成为适当的不可变 POJO。

如果这是为了携带与正在处理的请求相关联的临时数据,您应该使用请求属性或 Reactor Context 来代替。


查看完整回答
反对 回复 2021-12-30
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号