码迷,mamicode.com
首页 > 编程语言 > 详细

springboot自定义yaml配置文件

时间:2020-12-21 12:01:39      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:als   pat   obj   eof   ati   des   encode   port   java   

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文件
 * @author: Patrick
 * @create 2020-12-14 11:07
 **/
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; } }

 

springboot自定义yaml配置文件

标签:als   pat   obj   eof   ati   des   encode   port   java   

原文地址:https://www.cnblogs.com/patrick-king/p/14145527.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!