Spring Boot第三弹:Spring Boot之使用YAML

Spring Boot之使用YAML


小弟刚接触spring boot不久,仅想通过写网志的形式来加深记忆和方便以后查阅。如内容有不正确之处,还望各位大佬海量汪涵,并给小弟指出,共同进步。

1. 概述

YAML是JSON的超集,因此这是一种非常方便的格式,用于指定分层配置数据。


2. 加载YAML

SpringApplication类能够自动支持YAML作为一种properties的替代者。SpringFramework提供了两个可用于加载YAML文档的类:其中YamlPropertiesFactoryBean将加载YAML成为Properties;而YamlMapFactoryBean将加载YAML成为Map。如:

    environments:
          dev:
            url: http://
            name: Developer
    my:
     servers:
            -dev
            -pro
使用YamlPropertiesFactoryBean以上yaml得:
environments.dev.url = http://
environments.dev.name = Developer

my.servers[0] = dev
my.servers[1] = pro

3. 多环境YAML文件

可以通过使用spring.profiles键来指定该文档应用于哪一个环境,然后可以通过此种形式来为多个环境编写特定的配置文档。如:

server:
    address: 192.168.3.5
spring:
    profiles: dev
server:
    address: 192.168.3.6
spring:
    profiles: pro
server:
    address: 192.168.3.10

**以上如果dev处于活跃状态,address为192.168.3.6;
如pro处于活跃状态,address为192.168.3.10。**


4. 选择启动某个配置文件

Spring Boot配置文件提供了隔离一部分应用程序配置的方法,并可使其仅在某指定环境可用。任何有@Component和@Configuration注解的Bean都用@profile来指定加载哪个配置文件。如:

@Configuration 
@Profile( “production”)//加载production配置文件,即也代表当前是production环境
public class Demo{
    // ...
}

以普通Spring的方式,可以使用spring.profile.active环境属性来指定哪些配置文件处于活动状态。

spring.profiles.active = dev
或
spring: 
    profiles: 
        active: dev


----------


4.1以编程方式启动某配置文件

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication app = new SpringApplication(DemoApplication.class);
        //启动dev配置文件
        app.setAdditionalProfiles("dev");   // dev 或prod
        app.run(args);
    }
}

4.2 maven的pom文件中启动某配置文件

<profiles>
    <profile>
        <!-- 本地开发环境 -->
        <id>dev</id>
        <properties>
            <profiles.active>dev</profiles.active>
        </properties>
        <activation>
            <!-- 开启本地开发环境 -->
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <!-- 测试环境 -->
        <id>test</id>
        <properties>
            <profiles.active>test</profiles.active>
        </properties>
    </profile>
    <profile>
        <!-- 生产环境 -->
        <id>pro</id>
        <properties>
            <profiles.active>pro</profiles.active>
        </properties>
    </profile>
</profiles>

5. YAML下的列表

如,以下yaml配置文件:

book: 
     list: 
        -name: Java
        -name: C++

可用以下形式获取book列表:

@ConfigurationProperties(“book”)
 public class FooProperties{
    private final List <MyPojo> list = new ArrayList <>();
    public List <MyPojo>  getList(){
         return this .list;
    }
}

6. 宽松绑定

Spring Boot使用相对宽松的规则来将环境属性绑定到使用@ConfigurationProperties注解的Bean中,所以不需要环境属性名称和Bean属性名称完全匹配。

**如:context-path绑定contextPath和PORT绑定port
详见下表:**


       属性                        注意
person.firstName               标准驼峰语法
person.first_name         下划线符号,用于.properties和.yml
person.first-ame           kabab,推荐使用.properties和.yml
PERSON_FIRSTNAME           大写格式,推荐系统环境变量时使用
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐只乐之

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值