gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:56:06 25 4
gpt4 key购买 nike

考虑下面的代码片段 - 将简单的非线程安全 HashMap 传递给将在 SomeHandlerFunction 中的其他 Autowiring bean 中使用它的 SomeHandlerFunction 是否安全?

@Bean
RouterFunction<ServerResponse> request(SomeHandlerFunction handlerFunction) {
handlerFunction.setSimpleMapProperties(new HashMap());
return route(GET("/dummy"), handlerFunction);
}


@Service
class SomeHandlerFunction implements HandlerFunction {
@Autowired
List<AnotherBeans> anotherBeans;

Mono<T> handle(ServerRequest var1) {
// code...
}
}

我对 WebFlux 中的多线程模型有所了解,但这个案例让我感到困惑。

最佳答案

如果 HashMap 是可变的,那么这不是一个好主意 - 即使对于 Spring MVC 也是如此。你应该做什么?这实际上取决于当前的用例。

如果您尝试设置本地内存缓存,可以使用 Caffeine 等库,或者只是使用 ConcurrentMapCache

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

如果这意味着携带与正在处理的请求链接的临时数据,您应该使用请求属性或 react 器上下文。

关于java - Spring Webflux 是否在每个请求的单个线程中调用单个 HandlerFunction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53145566/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com