@Override
    public ExecuteContext before(ExecuteContext context) {
        if (shouldHandle(context)) {
            ThreadLocalUtils.removeRequestTag();
            ServerWebExchange exchange = (ServerWebExchange) context.getArguments()[0];
            ServerHttpRequest request = exchange.getRequest();
            HttpHeaders headers = request.getHeaders();
            String path = request.getURI().getPath();
            String methodName = request.getMethod().name();
            Map<String, List<String>> queryParams = request.getQueryParams();
            handlers.forEach(handler -> ThreadLocalUtils
                    .addRequestTag(handler.getRequestTag(path, methodName, headers, queryParams)));
        }
        return context;
    }
@Test
    public void testBefore() {
        // Test the before method
        interceptor.before(context);
        RequestTag requestTag = ThreadLocalUtils.getRequestTag();
        Map<String, List<String>> header = requestTag.getTag();
        Assert.assertNotNull(header);
        Assert.assertEquals(2, header.size());
        Assert.assertEquals("bar1", header.get("bar").get(0));
        Assert.assertEquals("foo1", header.get("foo").get(0));
    }