class ConfigInitializer {
    private static final Logger LOG = LoggerFactory.getLogger(ConfigInitializer.class);

    @Autowired
    private PluginAdapter pluginAdapter;

    @Autowired
    private PluginConfigParser pluginConfigParser;

    @Autowired
    private PluginEventWapper pluginEventWapper;

    @Autowired
    private LocalConfigLoader localConfigLoader;

    @Autowired(required = false)
    private RemoteConfigLoader remoteConfigLoader;

    @Value("${" + DiscoveryConstant.SPRING_APPLICATION_PARAMETER_EVENT_ONSTART_ENABLED + ":true}")
    private Boolean parameterEventOnstartEnabled;

    @PostConstruct
    public void initialize() {<FILL_FUNCTION_BODY>}

    private String[] getRemoteConfigList() {
        if (remoteConfigLoader != null) {
            String[] configList = null;

            try {
                configList = remoteConfigLoader.getConfigList();
            } catch (Exception e) {
                LOG.warn("Get remote config list failed", e);
            }

            return configList;
        } else {
            LOG.info("Remote config loader isn't provided");
        }

        return null;
    }

    private String[] getLocalConfigList() {
        String[] configList = null;

        try {
            configList = localConfigLoader.getConfigList();
        } catch (Exception e) {
            LOG.warn("Get local config list failed", e);
        }

        return configList;
    }
}

        LOG.info("------------- Load Discovery Config --------------");

        String[] remoteConfigList = getRemoteConfigList();
        if (remoteConfigList != null) {
            String partialRemoteConfig = remoteConfigList[0];
            if (StringUtils.isNotEmpty(partialRemoteConfig)) {
                LOG.info("Initialize partial remote config...");

                try {
                    RuleEntity ruleEntity = pluginConfigParser.parse(partialRemoteConfig);
                    pluginAdapter.setDynamicPartialRule(ruleEntity);
                } catch (Exception e) {
                    LOG.error("Initialize partial remote config failed", e);

                    pluginEventWapper.fireRuleFailure(new RuleFailureEvent(SubscriptionType.PARTIAL, partialRemoteConfig, e));
                }
            }

            String globalRemoteConfig = remoteConfigList[1];
            if (StringUtils.isNotEmpty(globalRemoteConfig)) {
                LOG.info("Initialize global remote config...");

                try {
                    RuleEntity ruleEntity = pluginConfigParser.parse(globalRemoteConfig);
                    pluginAdapter.setDynamicGlobalRule(ruleEntity);
                } catch (Exception e) {
                    LOG.error("Initialize global remote config failed", e);

                    pluginEventWapper.fireRuleFailure(new RuleFailureEvent(SubscriptionType.GLOBAL, globalRemoteConfig, e));
                }
            }
        }

        String[] localConfigList = getLocalConfigList();
        if (localConfigList != null) {
            String localConfig = localConfigList[0];
            if (StringUtils.isNotEmpty(localConfig)) {
                LOG.info("Initialize local config...");

                try {
                    RuleEntity ruleEntity = pluginConfigParser.parse(localConfig);
                    pluginAdapter.setLocalRule(ruleEntity);
                } catch (Exception e) {
                    LOG.error("Initialize local config failed", e);
                }
            }
        }

        if (remoteConfigList == null && localConfigList == null) {
            LOG.info("No configs are found");
        }

        // 初始化配置的时候，是否触发fireParameterChanged的EventBus事件
        if (parameterEventOnstartEnabled) {
            pluginEventWapper.fireParameterChanged();
        }

        LOG.info("--------------------------------------------------");
    
<no_super_class>