[英]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.