考慮下面的代碼片段 - 將簡(jiǎn)單的非線程安全 HashMap 傳遞給SomeHandlerFunction將在其他自動(dòng)裝配的 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... }}我有點(diǎn)了解 WebFlux 中的多線程模型,但是這個(gè)案例讓我感到困惑。
1 回答

手掌心
TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果這HashMap
是可變的,這不是一個(gè)好主意 - 即使使用 Spring MVC 也不行。你應(yīng)該怎么做?這實(shí)際上取決于手頭的用例。
如果您嘗試設(shè)置本地內(nèi)存緩存,您可以使用像 Caffeine 這樣的庫(kù),或者只是一個(gè)ConcurrentMapCache
.
如果您想與該 bean 共享配置鍵,您可以使用該映射Collections.unmodifiableMap
甚至更好地包裝該映射,使其成為適當(dāng)?shù)牟豢勺?POJO。
如果這是為了攜帶與正在處理的請(qǐng)求相關(guān)聯(lián)的臨時(shí)數(shù)據(jù),您應(yīng)該使用請(qǐng)求屬性或 Reactor Context 來(lái)代替。
添加回答
舉報(bào)
0/150
提交
取消