• springboot自定义yaml配置文件


    Spring Boot的默认不支持yaml文件,需要自定义一个factory

    import org.springframework.beans.factory.config.YamlPropertiesFactoryBean;
    import org.springframework.core.env.PropertiesPropertySource;
    import org.springframework.core.env.PropertySource;
    import org.springframework.core.io.support.EncodedResource;
    import org.springframework.core.io.support.PropertySourceFactory;
    
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Properties;
    
    /**
     * @version 0.1.0
     * @description: 解析自定义yml文件
     **/
    public class YamlPropertySourceFactory implements PropertySourceFactory {
        @Override
        public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
                     Properties propertiesFromYaml = loadYamlIntoProperties(resource);
                     String sourceName = name != null ? name : resource.getResource().getFilename();
                     return new PropertiesPropertySource(sourceName, propertiesFromYaml);
                 }
    
        private Properties loadYamlIntoProperties(EncodedResource resource) throws FileNotFoundException {
            try {
                YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
                factory.setResources(resource.getResource());
                factory.afterPropertiesSet();
                return factory.getObject();
            } catch (IllegalStateException e) {
                // for ignoreResourceNotFound
                Throwable cause = e.getCause();
                if (cause instanceof FileNotFoundException)
                    throw (FileNotFoundException) e.getCause();
                throw e;
            }
        }
    }
    
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;


    @Configuration @PropertySource(value
    = "classpath:env/${spring.profiles.active}/constant.yml", encoding = "UTF-8", factory = YamlPropertySourceFactory.class) @ConfigurationProperties(prefix = "constant") public class Constant { public static String UPLOAD_PATH; public void setUPLOAD_PATH(String UPLOAD_PATH) { Constant.UPLOAD_PATH = UPLOAD_PATH; } }
     
  • 相关阅读:
    个人学习代码保存:例8.在存储过程中使用简单的事务处理
    个人学习代码保存:例6.多文件上传
    泛型 .net学习日记
    .net 点击刷新验证码问题
    个人学习代码保存:例11.读取Excel文件中的数据
    个人学习代码保存:例12.读取GridView文件中的数据到Excel文件
    个人学习代码保存:例5.利用标准FileUpload单文件上传
    Android视频采集
    Android视频采集+H264编码
    实时传输协议(RTP)和实时控制协议(RTCP)
  • 原文地址:https://www.cnblogs.com/patrick-king/p/14145527.html
Copyright © 2020-2023  润新知