簡體   English   中英

如何在Spring-boot中為每個REST API請求創建唯一的Id?

[英]How to create unique Id per request for REST API in Spring-boot?

我需要讓我的日志(log4j引擎)在Spring-Boot應用程序中為每個REST API請求提供一個唯一的id來提供更多信息。

我想避免使用一個獲得requestId字段並從中擴展的超類。

我試圖在網上尋找一個很好的例子,但不是那么清楚。

我有什么最佳實踐可以使用嗎?

使用字段來實現這樣的功能只會在第一眼看到集成測試時出現問題。

理想情況下,只需遵循SRP原則並將生成邏輯包含在專用類中,您可以創建可注入的@Component .. MyIdGenerator等。

在那里你可以有一個synchronized方法generateId()

現在,您可以在任何需要的控制器中使用它,並且您可以更輕松地設置集成測試並對其進行更多控制。

更新:

如果這應該是一個全局策略,你也可以利用HandleInterceptorAdapter

@Component
public class RequestInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {

    /* generate unique id here and log what is needed */

    }

您可以封裝ID生成並在此類中記錄。

有幾種最佳實踐如下:

  1. 使用AOP參考: 用於控制器層的AOP
  2. 使用MDC
  3. 將MDC與AOP MDC和AOP一起使用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM