• 【浅学Java】SpringBoot 配置文件


    1. 配置文件的作用

    整个项目所有的重要数据都是在配置文件中配置的,比如:

    1. 数据库中的连接信息
    2. 项目的启动端口

    2. 配置文件的格式

    Spring Boot 配置文件的格式主要有两种:

    1. properties
    2. yml

    如下所示:
    在这里插入图片描述

    注意:

    1. 约定配置文件的文件名都是用application开头
    2. 当两者格式的配置文件同时存在时,约定 .properties 的优先级大于 .yml

    .properties配置文件的格式

    实例:
    在这里插入图片描述

    .properties配置文件的缺点

    可以看出, properties 有明显的缺,就是有挺多的冗余信息:
    在这里插入图片描述

    .yml配置文件的格式

    实例:
    在这里插入图片描述

    .yml配置文件的优点

    1. 书写简便,解决了.properties配置文件信息冗余的问题
    2. yml 是⼀个可读性⾼,写法简单、易于理解,它的语法和 JSON 语⾔类似。
    3. yml ⽀持更多的数据类型,它可以简单表达清单(数组)、散列表,标量等数据形态。它使⽤空⽩符号缩进和⼤量依赖外观的特⾊,特别适合⽤来表达或编辑数据结构、各种配置⽂件等。
    4. yml ⽀持更多的编程语⾔,它不⽌是 Java 中可以使⽤在 Golang、PHP、Python、Ruby、JavaScript、Perl 中

    3. 配置文件的分类

    3.1 两种类型配置文件

    1. SpringBoot内置的配置项,比如server.port
    2. 用户自定义得配置项

    3.2 用户自定义配置项

    # 字符串
    string.value: Hello
    # 布尔值,true或false
    boolean.value: true
    boolean.value1: false
    # 整数
    int.value: 10
    int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制
    # 浮点数
    float.value: 3.14159
    float.value1: 314159e-5 # 科学计数法
    # Null,~代表null
    null.value: ~
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4. 配置信息读取

    4.1 自定义配置信息读取

    首先在配置信息中,配置一个自定义信息:
    在这里插入图片描述
    然后读取:

    @RestController
    public class TestController {
    
        @Value("${mykey.key1}")
        private String mykey;
    
        @RequestMapping("/hi")
        public String sayhi(){
            return "hi,"+mykey;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    打印结果:
    在这里插入图片描述

    4.2 系统配置信息读取

    以项目端口号为实例,先配置项目端口号:
    在这里插入图片描述
    然后读取:

    @RestController
    public class TestController {
    
        @Value("${server.port}")
        private String port;
    
        @RequestMapping("/hi")
        public String sayhi(){
            return "hi,"+port;
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    打印结果:
    在这里插入图片描述

    4.3 特别注意_Value中的数据格式

    在这里插入图片描述

    4.4 yml中字符串修饰符的问题

    在这里插入图片描述
    yml配置如果使用了双引号修饰value值,那么value值就会触发其本身的作用,比如:\n表示换行。

    5. 配置对象以及读取对象

    先在 .yml 配置文件中配置 student对象:
    在这里插入图片描述
    创建和配置文件相对于的Student类:

    注意:要想上面的ConfigurationProperties能成功绑定,就必须是这个类具Setter方法

    @Component//将该对象存储在Spring当中
    @ConfigurationProperties(prefix = "student")//把配置文件中的student配置赋值给当前的对象
    @Data//使该类中的变量有Getter和Setter方法,
    public class Student {
        private int id;
        private String name;
        private Integer age;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行测试类:

    @RestController
    public class TestController {
        @Autowired
        private Student student;
        @RequestMapping("/hi")
        public String sayhi(){
            return "id:"+student.getId()+" | name:"+student.getName();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行结果:
    在这里插入图片描述

    6. 配置集合以及读取集合

    在配置文件中创建一个集合:
    在这里插入图片描述
    创建和配置文件中相对于的类:

    @Component
    @ConfigurationProperties(prefix = "dbtypes")
    @Data
    public class DBTypes {
        private List name;//这个名字必须和配置文件中的name所对应
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    运行测试类:

    @RestController
    public class TestController {
        @Autowired
        private DBTypes dbTypes;
        @RequestMapping("/hi")
        public String sayhi(){
            return dbTypes.toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    运行结果:
    在这里插入图片描述

    7. 设置不同环境的配置项

    创建一下配置文件:
    在这里插入图片描述
    每个配置文件中都配置一个端口号,然后在 application.yml 中选择某一个配置,如application-dev.yml:
    在这里插入图片描述

    那么启动项目,项目将在8888端口运行,即dev端口:
    在这里插入图片描述

    需要注意的是:在创建各个环境的配置文件时,必须以 application- 开头,其后面跟着字符就是环境名称,在 application.yml 中选择时,写的就是它。即:
    在这里插入图片描述

    这种方式就可以控制程序在不同环境中运行,比如果dev环境使用的时数据库A,test环境数据库B,切换这两者时,就只需要在application.yml中重写选择就行,就不需要重新写,即用啥环境就选择啥环境

  • 相关阅读:
    python+nodejs+vue教材征订管理系统
    机器学习实战——《跟着迪哥学Python数据分析与机器学习实战》
    学习笔记 谷粒02 Cloud
    性能提升3-4倍!贝壳基于Flink + OceanBase的实时维表服务
    【Redis】哨兵
    网络程序通信的流程
    Java毕设项目个人博客网站计算机(附源码+系统+数据库+LW)
    Android案例手册 - 实现下多个按钮展开收缩动画工具类
    shell中的条件控制语句
    java培训技术自定义视图介绍
  • 原文地址:https://blog.csdn.net/qq_52276036/article/details/128177946