码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • SpringBoot配置文件(properties、yml、yaml)


    文章目录

    • SpringBoot配置文件(properties、yml、yaml)
      • 一、配置文件
        • 1、配置tomcat
        • 2、配置banner
        • 3、配置日志
      • 二、三种配置格式
        • 1、application.properties(默认传统)
        • 2、applicaiton.yml(主流常用)
        • 3、application.yaml
      • 三、配置文件加载优先级
      • 四、yaml数据格式
        • 1、语法规则
        • 2、常用格式
        • 3、字面量格式
        • 4、对象类格式
        • 5、数组数据格式
        • 6、对象数据格式
        • 7、引用数据格式
      • 五、Java读取yaml格式数据
        • 1、注意事项
        • 2、读取常用格式
        • 3、读取字面量格式
        • 4、读取对象类格式
        • 5、读取数组格式
        • 6、读取对象数组格式
        • 7、读取全部属性数据
        • 8、将数据封装成对象进行读取
      • 六、注解
        • 1、@ConfigurationProperties


    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

    • 绑定配置信息到封装类中
  • 相关阅读:
    关于JDK/Java支持TTC字体的思路
    golang后端开发非常成熟好用的总结的几个高频使用库快速实现开发
    C语言入门基础题:奇偶 ASCII 值判断(C语言版)和ASCII码表,什么是ASCII码,它的特点和应用?
    给字符串添加加粗标签(AC自动机+Python)
    【1. MySQL锁机制】
    实例解释遇到前端报错时如何排查问题
    openGauss学习笔记-126 openGauss 数据库管理-设置账本数据库-归档账本数据库
    IDEA02:配置SQL Server2019数据库
    分布式事务之基于可靠消息的最终一致性架构设计方案
    嵌入式Linux驱动开发基础知识(一)——hello驱动程序开发
  • 原文地址:https://blog.csdn.net/s17856147699/article/details/126293451
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号