我是靠谱客的博主 无私黄蜂,最近开发中收集的这篇文章主要介绍SpringBoot配置文件讲解 及 读取配置文件简介yml配置文件读取,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

配置文件简介

Spring Boot 项目使用一个全局的配置文件 application.properties 或者是 application.yml,在 resources 目录下或者类路径下的 /config 下,一般我们放到 resources 下。
application.properties和application.yml都是spring boot的配置文件,但是两种配置文件的里面添加配置却不一样。yml这种方式更有层次感,它是天生就是一种树型建构,可读性更强,如下所示:

  • application.properties:
    在这里插入图片描述
  • application.yml
    在这里插入图片描述

更多配置

注意

  • application.properties优先级高于application.yml
  • 建议优先使用application.yml,官方给的很多demo,都是用yml文件配置的。
  • 将.properties里面的配置key换成yml只需要将“.”换成“:”,然后换行,将“=“ 换成“:”,在value前面一定要有一个空格,同一个key必须合并到一个树结构下。
  • 字符串默认不用加上单引号或者双引号;
    “”:双引号;不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
    name: “zhangsan n lisi”:输出;zhangsan 换行 lisi
    ‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据
    name: ‘zhangsan n lisi’:输出;zhangsan n lisi

yml 文件规则

  • key: value 格式书写
  • key 后面跟着冒号,再后面跟着一个空格,然后是值
  • yml不支持tab缩进
  • 可以使用 “-小写字母” 或 "_小写字母"来 代替 “大写字母”,如 userName 与 user-name、user_name 含义是一样的

解决Intellij下配置文件乱码问题

在这里插入图片描述

yml常见格式

  1. 普通的值(数字,字符串,布尔)
    字符串默认不用加上单引号或者双引号,比如:
    "":双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思
    name: “zhangsan n lisi”:输出;zhangsan 换行 lisi
    ’’:单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据
    name: ‘zhangsan n lisi’:输出;zhangsan n lisi

  2. 对象、Map (属性和值) (键值对)
    对象还是k: v的方式。k: v:在下一行来写对象的属性和值的关系;注意缩进(不支持tab,使用空格)

  3. 数组 (List、Set)
    数组(List、Set)用- 值表示数组中的一个元素

yml配置文件读取

方式一:@Value

配置文件内容:

name: hc
age: 18
content: "${name}的年龄是:${age}"

Controller代码:

@RestController
public class YmlInfoController {
    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;
    @Value("${content}")
    private String info;

    @RequestMapping("/f1")
    public String f1() {
        System.out.println(name + "t" + age);
        return info;
    }
}

注意:@Value所在的类需要是一个组件,如果是实体类需要加上@Component注解。

方式二:@ConfigurationProperties

示例1:

配置文件内容:
stu:
  num: 1001
  name: zhangsan
  age: 18
实体类:

创建实体类,使用@Component注释,同时使用@ConfigurationProperties并通过prefix (前缀)指定相应的 key 就可以了

@Component
@ConfigurationProperties(prefix = "stu")
public class YmlInfo {

    private Integer num;
    private String name;
    private Byte age;

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public String getName() {
        return name;
    }

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

    public Byte getAge() {
        return age;
    }

    public void setAge(Byte age) {
        this.age = age;
    }
}
Controller代码:

在Controller中通过@Autowired加载即可

@RestController
public class YmlInfoController {
    @Autowired
    private YmlInfo ymlInfo;

    @RequestMapping("/f2")
    public YmlInfo f2(){
        return ymlInfo;
    }
}

示例2:

配置文件内容:
bean:
  map:
    num: 1001
    name: zhangsan
    age: 18

  array: 1,2,3,4,5,6

  list:
    - swim
    - jump
    - run
    - read
实体类:
@Component
@ConfigurationProperties(prefix = "bean")
public class YmlInfo {

    private Integer num;
    private String name;
    private Byte age;

    private Map<String,Object> map;
    private String[] array;
    private List<String> list;

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public String getName() {
        return name;
    }

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

    public Byte getAge() {
        return age;
    }

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

    public Map<String, Object> getMap() {
        return map;
    }

    public void setMap(Map<String, Object> map) {
        this.map = map;
    }

    public String[] getArray() {
        return array;
    }

    public void setArray(String[] array) {
        this.array = array;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }
}
Controller代码:
@RestController
public class YmlInfoController {
    @Autowired
    private YmlInfo ymlInfo;

    @RequestMapping("/f22")
    public YmlInfo f22(){
        return ymlInfo;
    }
}

方式三:@Environment

配置文件内容:

array: 1,2,3,4,5,6

favorite:
  -swim
  -jump
  -run
  -read

Controller代码:

@RestController
public class YmlInfoController3 {
    @Autowired
    private Environment environment;

    @RequestMapping("/f3")
    public String f3() {
        String array = environment.getProperty("array");
        System.out.println(array);
        String favorite = environment.getProperty("favorite");
        return favorite;
    }
}

最后

以上就是无私黄蜂为你收集整理的SpringBoot配置文件讲解 及 读取配置文件简介yml配置文件读取的全部内容,希望文章能够帮你解决SpringBoot配置文件讲解 及 读取配置文件简介yml配置文件读取所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部