sách gpt4 ai đã đi

java - 设计失败,MDC 滥用

In lại 作者:行者123 更新时间:2023-11-30 06:58:40 27 4
mua khóa gpt4 Nike

我必须接管一个包含多个层、服务和组件的巨型整体。

当我浏览代码时,我首先意识到的是 MDC 的使用.

一些例子:

public void setContextOrderId(String orderId) {
MDC.put("orderId", orderId);
}

hoặc

String sessionId = MDC.get("sessionId");

MDC 在应用程序中用作静态 HashMap,我相信其动机是因为 MDC 在请求管道中的每个请求都可用,并且它被用作存储。

如何更换?线程安全容器有替代方案吗?

Cảm ơn.

1 Câu trả lời

天哪。有人使用MDC来进行数据存储。 “滥用”是这里的正确术语。

正确的解决方案取决于具体使用的内容。例如,如果您运行 Spring 之类的东西,那可能就是请求范围 bean 之类的东西。

从技术上讲,大多数“请求范围”解决方案使用 ThreadLocal在引擎盖下。 MDC 还使用 ThreadLocal.

如果我要重构类似的东西,我会尝试朝着某些依赖注入(inject)容器的方向发展,该容器尊重不同的范围(请求、 session 、应用程序等),无论是 Spring 还是其他。如果您只是将 MDC 替换为您自己的基于 ThreadLocal 的存储,您不会获得太多好处。

关于java - 设计失败,MDC 滥用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41346930/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com