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

由你决定 :

考虑下面的代码片段-将简单而不是线程安全的HashMap传递给SomeHandlerFunction将在其他自动装配bean中使用的HashMap是否安全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中的多线程模型有所了解,但是这种情况使我感到困惑。

布莱恩·克洛泽(Brian Clozel):

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

如果您要设置本地内存缓存,则可以使用Caffeine之类的库,也可以仅使用一个库ConcurrentMapCache

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

如果这是为了携带与正在处理的请求链接的临时数据,则应该使用请求属性或Reactor Context。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring Boot-为什么在使用Tiles + JSP的单个请求中多次调用MyFilter?

在Spring的@Controller类中从单个方法调用两个不同的服务是否很好?

Spring是否在rest控制器中为每个请求创建新线程?

Spring Rest请求中的单个字段主体

Spring Webflux / Reactor 发布调用线程

Spring Keycloak适配器为每个单个请求加载Open-ID配置

Spring WebFlux-通过WebClient为Mono内列表中的每个元素发送HTTP请求

Spring Boot Webflux:避免在处理程序中调用线程阻塞方法

如何在Spring Batch的多线程概念中写入单个文件

Spring Boot-如何在单个POST请求中创建实体和嵌套实体

在每个spring boot @Test上重写单个@Configuration类

Spring Web MVC-验证单个请求参数

Spring Integration @MessagingGateway单个请求有多个回复

Spring @Async与Spring WebFlux

在Spring REST中,是否在每个请求上实例化请求对象?

spring-boot RabbitListener如何将单个队列绑定到单个线程?

如何计算总执行时间并在响应头中设置Spring WebFlux中每个请求的x-runtime?

在每个请求中设置Cookie-SPRING

Spring-Hibernate中的每个线程是否应该有一个EntityManager?

Spring ThreadPoolTaskExecutor在每个方法调用上创建新线程

Spring WebFlux-如何从请求中获取数据?

如何在Spring WebFlux中记录请求和响应正文

如何在单个线程中执行一系列步骤,并在 spring-integration 中使用异步流程?

Spring boot - 在多租户应用程序中的单个请求中访问多个数据源

通过多线程调用的Spring @Transactional方法(多请求)

在请求线程完成之前调用Spring RequestContextListenerrequestDestroyed

每个线程“单个”

Spring Controller 中的多线程“未找到线程绑定请求”

Keycloak Spring适配器-检查每个HTTP请求中authToken是否处于活动状态