class CommonConfiguration {

    static {
        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> aClass, Object o) {
                if (o instanceof String) {
                    o = ((String) o).getBytes();
                }
                if (o instanceof byte[]) {
                    o = Unpooled.wrappedBuffer(((byte[]) o));
                }
                if (o instanceof ByteBuf) {
                    return (T) o;
                }
                return convert(aClass, JSON.toJSONBytes(o));
            }
        }, ByteBuf.class);

        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> aClass, Object o) {
                return (T) MediaType.valueOf(String.valueOf(o));
            }
        }, MediaType.class);

        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> type, Object value) {
                return (T)DataSize.parse(String.valueOf(value));
            }
        }, DataSize.class);

        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> type, Object value) {
                return (T) TimeUtils.parse(String.valueOf(value));
            }
        }, Duration.class);

        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> type, Object value) {
                return (T) Interval.of(String.valueOf(value));
            }
        }, Interval.class);

        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> type, Object value) {
                return (T) TimeUtils.parseUnit(String.valueOf(value));
            }
        }, ChronoUnit.class);

        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> type, Object value) {

                return (T)((Long)CastUtils.castNumber(value).longValue());
            }
        }, long.class);

        BeanUtilsBean.getInstance().getConvertUtils().register(new Converter() {
            @Override
            public <T> T convert(Class<T> type, Object value) {

                return (T)((Long) CastUtils.castNumber(value).longValue());
            }
        }, Long.class);

        //捕获jvm错误,防止Flux被挂起
        Hooks.onOperatorError((err, val) -> {
            if (Exceptions.isJvmFatal(err)) {
                return new JvmErrorException(err);
            }
            return err;
        });
        Hooks.onNextError((err, val) -> {
            if (Exceptions.isJvmFatal(err)) {
                return new JvmErrorException(err);
            }
            return err;
        });
    }

    @Bean
    public BeanPostProcessor globalReactorQlFeatureRegister() {
        return new BeanPostProcessor() {
            @Override
            public Object postProcessAfterInitialization(@Nonnull Object bean, @Nonnull String beanName) throws BeansException {
                if (bean instanceof Feature) {
                    DefaultReactorQLMetadata.addGlobal(((Feature) bean));
                }
                return bean;
            }
        };
    }

    @Bean
    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer(){
        return builder->{
            builder.deserializerByType(Date.class,new SmartDateDeserializer());
        };
    }

    @Bean
    public ConfigManager configManager(ObjectProvider<ConfigScopeCustomizer> configScopeCustomizers,
                                       ReactiveRepository<ConfigEntity, String> repository) {<FILL_FUNCTION_BODY>}

    @Bean
    public PermissionResourceProvider permissionResourceProvider(){
        return new PermissionResourceProvider();
    }

    @Bean
    public TypeScriptDeclareResourceProvider typeScriptDeclareResourceProvider() {
        return new TypeScriptDeclareResourceProvider();
    }

    @Bean
    public ResourceManager resourceManager(ObjectProvider<ResourceProvider> providers) {
        DefaultResourceManager manager = new DefaultResourceManager();
        providers.forEach(manager::addProvider);
        return manager;
    }

    @Bean
    public DataReferenceManager dataReferenceManager(ObjectProvider<DataReferenceProvider> provider) {
        DefaultDataReferenceManager referenceManager = new DefaultDataReferenceManager();

        provider.forEach(referenceManager::addStrategy);

        return referenceManager;
    }

    @AutoConfiguration
    @ConditionalOnClass(ReactiveRedisOperations.class)
    static class DefaultUserBindServiceConfiguration {
        @Bean
        public DefaultUserBindService defaultUserBindService(ReactiveRedisOperations<Object, Object> redis) {
            return new DefaultUserBindService(redis);
        }
    }
}


        SimpleConfigManager configManager = new SimpleConfigManager(repository);
        for (ConfigScopeCustomizer customizer : configScopeCustomizers) {
            customizer.custom(configManager);
        }
        return configManager;
    
<no_super_class>