class ObjectStoreConfigServiceImpl extends AbstractGeneralConfigServiceImpl<ObjectStoreDTO<T>> implements InitializingBean {
    @Resource
    private DefaultListableBeanFactory beanFactory;

    @Resource
    private ApplicationContext ctx;

    private static final String BEAN_NAME = "ObjectStoreService";

    /**
     * 构造方法，传入GeneralConfigDao、ObjectMapper和type。
     *
     * <p>Constructor, passing in GeneralConfigDao, ObjectMapper and type.</p>
     *
     * @param generalConfigDao 配置Dao对象
     * @param objectMapper     JSON工具类对象
     */
    protected ObjectStoreConfigServiceImpl(GeneralConfigDao generalConfigDao, ObjectMapper objectMapper) {
        super(generalConfigDao, objectMapper);
    }

    @Override
    public String type() {
        return "oss";
    }

    @Override
    protected TypeReference<ObjectStoreDTO<T>> getTypeReference() {
        return new TypeReference<>() {
            @Override
            public Type getType() {
                return ObjectStoreDTO.class;
            }
        };
    }

    @Override
    public void handler(ObjectStoreDTO<T> config) {<FILL_FUNCTION_BODY>}

    /**
     * 初始化华为云OBS
     */
    private void initObs(ObjectStoreDTO<T> config) {
        var obsConfig = objectMapper.convertValue(config.getConfig(), ObjectStoreDTO.ObsConfig.class);
        Assert.hasText(obsConfig.getAccessKey(), "cannot find obs accessKey");
        Assert.hasText(obsConfig.getSecretKey(), "cannot find obs secretKey");
        Assert.hasText(obsConfig.getEndpoint(), "cannot find obs endpoint");
        Assert.hasText(obsConfig.getBucketName(), "cannot find obs bucket name");

        var obsClient = new ObsClient(obsConfig.getAccessKey(), obsConfig.getSecretKey(), obsConfig.getEndpoint());

        beanFactory.destroySingleton(BEAN_NAME);
        beanFactory.registerSingleton(BEAN_NAME, new ObsObjectStoreServiceImpl(obsClient, obsConfig.getBucketName(), obsConfig.getSavePath()));

        log.info("obs store service init success.");
    }

    @Override
    public void afterPropertiesSet() throws Exception {
        // 初始化文件存储
        handler(getConfig());
    }
}

        // 初始化文件存储服务
        if (config != null) {
            switch (config.getType()) {
                case OBS:
                    initObs(config);
                    break;
                // case other object store service
                default:
            }
            ctx.publishEvent(new ObjectStoreConfigChangeEvent(config));
        }
    
<methods>public ObjectStoreDTO<T> getConfig() ,public void saveConfig(ObjectStoreDTO<T>) <variables>protected final non-sealed org.apache.hertzbeat.manager.dao.GeneralConfigDao generalConfigDao,protected final non-sealed ObjectMapper objectMapper