@Override
    public ExecuteContext before(ExecuteContext context) {
        if (context.getObject() instanceof Builder) {
            Builder builder = (Builder) context.getObject();
            Optional<Object> connector = ReflectUtils.getFieldValue(builder, "connector");
            if (connector.isPresent() && connector.get() instanceof JettyClientHttpConnector) {
                // There is a bug in the Jetty Client Http Connector, and the retry filter cannot be injected,
                // otherwise it will be reported when it is retried
                // IllegalStateException: multiple subscribers not supported
                return context;
            }

            // Initialize
            init();

            // Injected retries will no longer be injected
            Optional<Object> filters = ReflectUtils.getFieldValue(builder, "filters");
            if (!filters.isPresent()) {
                context.skip(getRetryWebClient(builder));
                return context;
            }
            List<ExchangeFilterFunction> list = (List<ExchangeFilterFunction>) filters.get();
            for (ExchangeFilterFunction filterFunction : list) {
                if (filterFunction instanceof AbstractRetryExchangeFilterFunction) {
                    return context;
                }
            }
            context.skip(getRetryWebClient(builder));
        }
        return context;
    }
@Test
    public void testReactorClientHttpConnector() {
        // Normal
        Builder builder = WebClient.builder();
        builder.clientConnector(new ReactorClientHttpConnector());
        ExecuteContext context = ExecuteContext.forMemberMethod(builder, method, null, null, null);
        interceptor.before(context);
        Assert.assertTrue(context.isSkip());
        WebClient client = (WebClient) context.getResult();
        Optional<Object> filters = ReflectUtils.getFieldValue(client.mutate(), "filters");
        Assert.assertTrue(filters.isPresent());
        Assert.assertEquals(1, ((List<?>) filters.get()).size());
        Assert.assertTrue(((List<?>) filters.get()).get(0) instanceof AbstractRetryExchangeFilterFunction);
        Assert.assertNull(ReflectUtils.getFieldValue(builder, "filters").orElse(null));

        // It has already been injected
        builder = WebClient.builder();
        context = ExecuteContext.forMemberMethod(builder, method, null, null, null);
        builder.filter(new RetryExchangeFilterFunction());
        interceptor.before(context);
        Assert.assertFalse(context.isSkip());
    }