Spring boot使用yml文件自定义配置
程序员文章站
2022-03-02 18:15:31
...
通过配置,可以写自定义yml配置
支持 yml 文件工厂类
/**
* 版权:Taylor
* 描述: @PropertySource 支持 yml 文件工厂类
* 创建时间:2020年05月15日
*/
package com.taylor.test.service.config;
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.DefaultPropertySourceFactory;
import org.springframework.core.io.support.EncodedResource;
import java.io.*;
import java.util.Properties;
/**
* @author Taylor
* @PropertySource 支持 yml 文件工厂类
* @date 2020年05月15日
*/
public class ResourceFactory extends DefaultPropertySourceFactory {
public static final String YML = ".yml";
public static final String YAML = ".yaml";
@Override
public PropertySource<?> createPropertySource(String name, EncodedResource resource) throws IOException {
String sourceName = (name == null) ? resource.getResource().getFilename() : name;
assert sourceName != null;
if (sourceName.endsWith(YML) || sourceName.endsWith(YAML)) {
YamlPropertiesFactoryBean factory = new YamlPropertiesFactoryBean();
factory.setResources(resource.getResource());
factory.afterPropertiesSet();
Properties properties = factory.getObject();
assert properties != null;
return new PropertiesPropertySource(sourceName, properties);
}
return super.createPropertySource(name, resource);
}
}
使用举例:
支持嵌套,List等配置
rule:
validOrder:
portAnalysis: total,percent,totalI,percentI,totalE,percentE
cargoStandard: totalI,percentI,totalI,totalE,percentE
different: total,percent,totalI,percentI,totalE,percentE
orderType: asc,desc
package com.taylor.test.config;
import com.taylor.test.service.config.ResourceFactory;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import java.io.Serializable;
/**
* 类说明
*
* @author taylor
* @create 2020-07-10
* @since 模块名称
*/
@ConfigurationProperties(prefix = "rule")
@PropertySource(
value = {"classpath:order.yml"},
encoding = "utf-8",
factory = ResourceFactory.class)
@Configuration
@Getter
@Setter
@ToString
public class OrderRule {
ValidOrderDto validOrder;
@Getter
@Setter
public static class ValidOrderDto implements Serializable {
private String portAnalysis;
private String cargoStandard;
private String different;
private String orderType;
}
}
上一篇: springboot2.0x 配置执行 schema.sql 脚本
下一篇: springboot2.0x 和springboot 1.0 整合redis 使用自定义CacheManager 问题
推荐阅读
-
详解spring boot starter redis配置文件
-
[Spring Boot]使用自定义注解统一请求返回值
-
spring boot启动时加载外部配置文件的方法
-
spring boot使用自定义的线程池执行Async任务
-
详解Spring Boot配置使用Logback进行日志记录的实战
-
spring boot静态变量注入配置文件详解
-
Spring Boot 配置文件详解(小结)
-
Spring-Boot使用嵌入式容器,那怎么配置自定义Filter呢
-
Spring Boot使用yml格式进行配置的方法
-
IDEA开发spring boot应用时 application.yml 或 application.properties 自定义属性提示