[英]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生成並在此類中記錄。
有幾種最佳實踐如下:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.