@Override
    public void handlerPlugin(final PluginData pluginData) {
        if (Objects.nonNull(pluginData) && Boolean.TRUE.equals(pluginData.getEnabled())) {
            //init redis
            RedisConfigProperties redisConfigProperties = GsonUtils.getInstance().fromJson(pluginData.getConfig(), RedisConfigProperties.class);
            //spring data redisTemplate
            if (Objects.isNull(Singleton.INST.get(ReactiveRedisTemplate.class))
                    || Objects.isNull(Singleton.INST.get(RedisConfigProperties.class))
                    || !redisConfigProperties.equals(Singleton.INST.get(RedisConfigProperties.class))) {
                final RedisConnectionFactory redisConnectionFactory = new RedisConnectionFactory(redisConfigProperties);
                ReactiveRedisTemplate<String, String> reactiveRedisTemplate = new ShenyuReactiveRedisTemplate<>(
                        redisConnectionFactory.getLettuceConnectionFactory(),
                        ShenyuRedisSerializationContext.stringSerializationContext());
                Singleton.INST.single(ReactiveRedisTemplate.class, reactiveRedisTemplate);
                Singleton.INST.single(RedisConfigProperties.class, redisConfigProperties);
            }
        }
    }
@Test
    public void handlerPluginTest() {
        RedisConfigProperties redisConfigProperties = generateRedisConfig(generateDefaultUrl());
        PluginData pluginData = new PluginData();
        pluginData.setEnabled(true);
        pluginData.setConfig(GsonUtils.getInstance().toJson(redisConfigProperties));
        new RateLimiterPluginDataHandler().handlerPlugin(pluginData);
        assertEquals(redisConfigProperties.getUrl(), Singleton.INST.get(RedisConfigProperties.class).getUrl());
        assertNotNull(Singleton.INST.get(ReactiveRedisTemplate.class));
    }