springboot从零开始:properties 文件替换成 yml 文件

前言:

本系列博客记录 springboot 求学之路:
一般你去看稍微新点的springboot工程,它的资源配置文件都是 yml,而不是自带的 properties;一方面是 yml 文件书写格式比较清晰简洁(和 python 书写格式很像),另一方面多种环境(测试、开发、生产等)配置也方便。

1.properties 文件使用

毕竟是自带的文件嘛,我们先用一下看看效果,然后再丢掉嘛(有点渣,做人不要这样…)
打开 resources 目录下的 application.properties 文件,写入:

server.port=8000

这段意思是指定访问端口 8000(默认值 8080),
对应的接口代码如下:

package com.test.demo.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {

    @GetMapping(path = "/")
    public String get() {
        return "hello, SpringBoot";
    }
}

看下效果
在这里插入图片描述
反正就是生效了

2.yml 文件使用

首先,先把 resources 下 application.properties 删了,然后在同一个地方创建 application.yml(文件名字不能错),写入配置:

server:
  port: 8000

重新启动一下工程,你会发现通过 8000 端口可以访问,也就是说替换成功了

tips: 这里是比较新的 springboot 版本,如果是旧版本可能出现不生效的情况,是因为旧版本不支持 yml 文件,这时候需要在 pom 里面加入 yaml 依赖,如下:

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.20</version>
</dependency>
3.多个 yml 文件的配置使用

在 resources 下新建 application-test.yml 文件,用途是测试环境,写入配置:

server:
  port: 8000

在 resources 下新建 application-pro.yml 文件,用途是生产环境,写入配置:

server:
  port: 9000

修改 application.yml 文件配置如下:

spring:
  profiles:
    active: pro

意思是让 pro 环境(application-pro.yml)生效
这时候再重新运行工程,会发现 9000 端口生效,8000 端口无效

tips:

  1. 多环境命令一定是 application-xxx.yml,在 application.yml 里面只写 xxx 就行了
  2. 如果 application.yml 和生效配置文件(上面pro文件)有配置冲突,例如 application.yml 添加端口号配置为 8888,生效配置文件配置覆盖冲突的配置项(pro 文件为准)。
4.yml 文件配置信息读取

首先在 pom 加依赖,

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>

实际使用当中,在2.2.6版本没有这个依赖也是可以的,只是在 yml 文件中有黄色高亮告警,在代码里面也会有告警提示,建议加上。
application-pro.yml 配置如下:

server:
  port: 9000
person:
  age: 28
  name: jonny

TestController 改造一下:

package com.test.demo.controller;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@ConfigurationProperties(prefix = "person")    // 提示代码所用文件配置的前缀
public class TestController {
    private int age;   // 对应配置文件的 age,值为整型 28
    private String name;  // 对应配置文件的 name,值为字符串 jonny

    public void setAge(int age) {
        this.age = age;
    }


    public void setName(String name) {
        this.name = name;
    }

    @GetMapping(path = "/age")
    public int getAge() {
        return age;
    }

    @GetMapping(path = "/name")
    public String getName() {
        return name;
    }
}

tips:

  1. 代码的属性名称一定要与 yml 里面完全一致
  2. 一定要有 set 方法,作用就是把 yml 属性的值赋予给类的属性,没有 set 方法没法赋值
  3. get,set 方法建议用 @Data 注解整个类,依赖如下:
 <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.18.12</version>
     <scope>provided</scope>
 </dependency>

浏览器测试如下:
在这里插入图片描述

5.因版本差异,建议实践确认区别,end
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值