• SpringBoot配置文件(properties、yml、yaml)



    SpringBoot配置文件(properties、yml、yaml)

    一、配置文件

    • SpringBoot默认的配置文件:application.properties,键值对形式编写
      在这里插入图片描述
    • 官网文档中有相关配置信息:https://docs.spring.io/spring-boot/docs/current/reference/html/
      在这里插入图片描述
    • 每一个配置对应一个技术和jar包有关

    1、配置tomcat

    # 服务器的端口配置
    server.port=80
    
    • 1
    • 2

    2、配置banner

    # 修改banner
    # 关闭banner的显示
    #spring.main.banner-mode=off
    # 设置banner的图片样式
    #spring.banner.image.location=aaa.jpg
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3、配置日志

    # 日志
    # debug日志
    #logging.level.root=debug
    # 报错日志
    #logging.level.root=error
    
    • 1
    • 2
    • 3
    • 4
    • 5

    二、三种配置格式

    1、application.properties(默认传统)

    server.port=80
    
    • 1

    2、applicaiton.yml(主流常用)

    server:
      port: 81
    
    • 1
    • 2

    3、application.yaml

    server:
      port: 82
    
    • 1
    • 2

    三、配置文件加载优先级

    • application.properties(大) -> applicaiton.yml(中) -> application.yaml(小)
    • 不同配置文件中相同配置将被覆盖,不同配置文件中不同配置文件全部保留

    四、yaml数据格式

    1、语法规则

    • 区分大小写
    • 格式要求严格
    • 属性名与属性值之间使用冒号+空格分隔
    • 同层级的名称不能一样
    • #表示注释
    • IDEA会帮我们定义格式,书写注意即可

    2、常用格式

    # 常用格式
    server:
      port: 82
    
    • 1
    • 2
    • 3

    3、字面量格式

    # 字面量
    port: 8080
    party: true
    birthday: 2020-10-02
    
    • 1
    • 2
    • 3
    • 4

    4、对象类格式

    # 对象类
    user:
      name: admin
      age: 16
    
    • 1
    • 2
    • 3
    • 4

    5、数组数据格式

    # 数组
    likes:
      - game
      - music
      - sleep
    
    enterprise:
      name: zs
      age: 12
      subject:
        - Java
        - 前端
        - 大数据
    
    lists2: [game,music,sleep]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    6、对象数据格式

    # 对象数组
    users:
      - name: zs
        age: 18
      - name: ls
        age: 20
    
    users2:
      -
        name: zs
        age: 18
      -
        name: ls
        age: 20
    
    users3: [{name:zs,age:12},{name:ls,age:18}]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    7、引用数据格式

    # 出现大量相同的情况
    a: c:\windows\system\a
    b: c:\windows\system\b
    c: c:\windows\system\c
    
    # 引用数据
    baseDir: c:\windows\system
    # 如果出现转移字符,使用双引号包含
    tempDir: "${baseDir}\temp \a \b"
    # 使用${属性名}引用数据
    tempDir1: ${baseDir}\a
    tempDir2: ${baseDir}\b
    tempDir3: ${baseDir}\c
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    五、Java读取yaml格式数据

    1、注意事项

    • 属性名随便定义
    • 注解中的值与yaml中的名称对应

    2、读取常用格式

        // 常用格式
        @Value("${server.port}")
        private String port1;
        System.out.println("port1=====>" + port1);
    
    • 1
    • 2
    • 3
    • 4

    3、读取字面量格式

     	// 字面量
        @Value("${party}")
        private String party1;
        System.out.println("party1=====>" + party1);
    
    • 1
    • 2
    • 3
    • 4

    4、读取对象类格式

        // 对象类
        @Value("${user.name}")
        private String name1;
        System.out.println("name1=====>" + name1);
    
    • 1
    • 2
    • 3
    • 4

    5、读取数组格式

       // 数组
        @Value("${likes[1]}")
        private String likes1;
        System.out.println("likes1=====>" + likes1);
    
    • 1
    • 2
    • 3
    • 4

    6、读取对象数组格式

        // 对象数组
        @Value("${users[1].age}")
        private String age1;
        System.out.println("age1=====>" + age1);
    
    • 1
    • 2
    • 3
    • 4

    7、读取全部属性数据

       // 读取全部数据
        @Autowired
        private Environment env;
        System.out.println(env.getProperty("server.port"));
        System.out.println(env.getProperty("user.name"));
    
    • 1
    • 2
    • 3
    • 4
    • 5

    8、将数据封装成对象进行读取

    # 创建类,用于封装下面的数据
    # 由Spring帮我们加载数据到对象中,一定要告诉Spring加载这组信息
    # 使用的时候从spring中直接获取信息使用
    datasource:
      driver: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost/springboot_db
      username: root
      password: 111111
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    package com.sgz.day62_springboot_demo;
    
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    /**
     * 作者:沈公子
     * 日期:2022/8/12 - 9:29
     * 需求:
     * 1、定义数据模型封装yaml文件中对应的数据
     * 2、定义为spring管控的bean
     * 3、指定加载的数据
     */
    @Component
    @ConfigurationProperties("datasource")  // 与yaml对应
    public class MyDataSource {
    
        // Java属性名与yaml属性名对应
        private String driver;
        private String url;
        private String username;
        private String password;
    
        public String getDriver() {
            return driver;
        }
    
        public void setDriver(String driver) {
            this.driver = driver;
        }
    
        public String getUrl() {
            return url;
        }
    
        public void setUrl(String url) {
            this.url = url;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        @Override
        public String toString() {
            return "MyDataSource{" +
                    "driver='" + driver + '\'' +
                    ", url='" + url + '\'' +
                    ", username='" + username + '\'' +
                    ", password='" + password + '\'' +
                    '}';
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
        @Autowired
        private MyDataSource myDataSource;
        System.out.println(myDataSource);
    
    • 1
    • 2
    • 3

    六、注解

    1、@ConfigurationProperties

    • 绑定配置信息到封装类中
  • 相关阅读:
    java.security.*篇(1) RSA 加密与解密demo
    5.无霍尔BLDC转子预定位及同步加速
    网络上怎么赚点零花钱
    Qt事件、自定义事件、事件过滤、发送事件
    视频集中存储/云存储/磁盘阵列EasyCVR平台分组批量绑定/取消设备功能详解
    每日一面系列之Spring中@Autowired和@Inject注解的区别?
    kotlin if when 循环
    C++ 如何把string转为int,如何把int转为string(字符串转为数字,数字转为字符串)
    内核追踪技术之 ftrace
    主流开源大语言模型的微调方法
  • 原文地址:https://blog.csdn.net/s17856147699/article/details/126293451