• SpringBoot配置文件



    提示:以下是本篇文章正文内容,Java系列学习将会持续更新

    1. 什么是配置文件?

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

    • 数据库的连接信息(包含用户名和密码的设置);
    • 项目的启动端口;
    • 第三方系统的调用秘钥等信息;
    • 用于发现和定位问题的普通日志和异常日志等。

    Spring Boot 配置文件主要分为以下两种格式:一般在 resources 包下

    • application.properties
    • application.yml

    说明

    • properties是以key=value的形式配置的键值对类型配置文件,而yml是以key: value的形式配置的键值对类型配置文件;

    • properties是早期且系统默认的配置文件格式,但配置存在一定的冗余数据,而yml可以更好的解决数据冗余问题;

    • yml通用性更好,支持多语言,支持更多的数据类型;

    • 两种格式的文件可以同时存在于一个项目中,两者可以同时加载。但是.properties文件优先级高,当对同一数据做出不同不同配置时,会覆盖.yml文件。而且也不建议同时写两个文件。

    回到目录…

    2. properties 配置文件说明

    properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,如:

    # 配置项目端口号
    server.port=8080
    # 配置数据库
    spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
    spring.datasource.username=root
    spring.datasource.password=123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    回到目录…

    3. yml 配置文件说明

    3-1 yml基础语法

    yml 是以键值的形式配置的,key 和 value 之间是以“: ”连接的,如:

    spring:
      main:
        # 关闭 Spring 默认的 banner 显示
        banner-mode: off
        # 关闭启动日志打印
        log-startup-info: false
        
      banner:
        image:
          # 让 banner 显示某张图的字符形式
          location: classpath:hill.png
          
      datasource:
        url: jdbc:mysql://127.0.0.1:3306/java22_diaocha?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
    
    # 显示更详细的调试信息 默认是 false
    debug: true
    
    logging:
      file:
        # 使用 YAML 格式时,可以正常使用中文。YAML 下不用再做 \ 的转义了
        name: F:\IDEA Project volume\03_JavaEE\day4_配置文件
        
      # 设置日志输出级别
      level:
        # 如果是包名,则这个包下的所有类(孩子 + 子孙)都遵守这个输出级别
        com.spring.day4: info
        # 如果是类名,则只有这个类遵守这个输出级别
        com.spring.day4.Demo2: debug
        
      pattern:
        # 控制台的日志格式(只输出消息本身)
        # 中间有 YAML 的特殊字符,用单引号引起来
        console: '%clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n'
    
    • 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

    回到目录…

    3-2 yml进阶: 配置数据类型

    # 字符串
    string.value: Hello
    
    # 布尔值,truefalse
    boolean.value: true
    
    # 整数
    int.value: 10
    
    # Null~代表null
    null.value: ~
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3-3 yml进阶: 配置对象

    student:
      id: 1
      name: Java
      age: 18
    
    • 1
    • 2
    • 3
    • 4

    或者,行内写法:

    student: {id: 1,name: Java,age: 18}
    
    • 1

    3-1 yml进阶: 配置集合

    dbtypes:
      name:
        - mysql
        - sqlserver
        - db2
    
    • 1
    • 2
    • 3
    • 4
    • 5

    或者,行内写法:

    dbtypes: {name: [mysql,sqlserver,db2]}
    
    • 1

    回到目录…

    4. 读取配置文件

    SpringBoot分别提供3种方式读取项目中配置文件的内容。

    # 自定义对象:
    wangshaoyu:
      name: 王少宇
      age: 20
      address: 中国
    
    • 1
    • 2
    • 3
    • 4
    • 5

    4-1 Environment

    Environment是用来读取应用程序运行时的环境变量的类,可以通过key-value的方式读取配置文件和系统环境变量,命令行输入参数,系统属性等,具体如下:

    @Slf4j
    @Component
    public class ReadFromConfig1 {
    	// 将 Spring 下的 Environment 对象注入
        @Autowired
        public ReadFromConfig1(Environment environment) {
        	// getProperty("") 指向需要的value对应的key值
            String name = environment.getProperty("wangshaoyu.name");
            log.info("读取到的 wangshaoyu.name = " + name);
    
            int age = environment.getProperty("wangshaoyu.age");
            log.info("读取到的 wangshaoyu.age = " + age);
    
            String address = environment.getProperty("wangshaoyu.address");
            log.info("读取到的 wangshaoyu.address = " + address);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    4-2 @Value

    如果在项目中,想要主动的读取配置文件中的内容,可以使用 @Value 注解来实现。
    @Value 注解使用“${}”的格式读取,如下代码所示:

    @Slf4j
    @Component
    public class ReadFromConfig2 {
    
        public ReadFromConfig2(
                // 一定要使用 Spring 下的那个 @Value 注解
                @Value("${wangshaoyu.name}") String name,
                @Value("${wangshaoyu.age}") int age,
                @Value("${wangshaoyu.address}") String address) {
            log.info("姓名: " + name);
            log.info("年龄: " + age);
            log.info("地址: " + address);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4-3 @ConfigurationProperties

    使用@ConfigurationProperties首先建立配置文件与对象的映射关系,然后在控制器方法中使用@Autowired注解将对象注入。具体如下:

    1.定义配置类 :需要将该类注册到 Spring 中

    // 使用 @Component 注册到 Spring 中
    @Component
    // prefix 指向配置属性的前置项
    @ConfigurationProperties(prefix = "wangshaoyu")
    public class WangshaoyuConfig {
    
        private String name;
        private String age;
        private String address;
    
        // setter 方法是必须的,否则不会生效,即使属性是用 public 修饰的
        public void setName(String name) {
            this.name = name;
        }
        public void setAge(int age) {
            this.age = age;
        }
        public void setAddress(String address) {
            this.address = address;
        }
    
    	// 为了能访问到私有属性,再写个 getter 方法
        public String getName() {
            return name;
        }
    	public int getAge() {
            return age;
        }
        public String getAddress() {
            return address;
        }
    }
    
    • 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

    2.使用配置类

    @Slf4j
    @Component
    public class ReadFromConfig3 {
    	// 将配置文件类注入
        @Autowired
        public ReadFromConfig3(WangshaoyuConfig config) {
            log.info("读取到的 wangshaoyu.name = " + config.getName());
            log.info("读取到的 wangshaoyu.age = " + config.getAge());
            log.info("读取到的 wangshaoyu.address = " + config.getAddress());
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    回到目录…

    在这里插入图片描述


    总结:
    提示:这里对文章进行总结:
    以上就是今天的学习内容,本文是SpringBoot配置文件的学习,认识了两种格式的配置文件的写法,以及读取配置文件的三种方法。之后的学习内容将持续更新!!!

  • 相关阅读:
    使用树莓派学习PostgreSQL(二):通过MSSQL Linked Server导入数据
    应用层通信协议设计
    求助!什么软件可以人声分离?手机上可以进行人声分离操作吗?
    Flow深入浅出系列之更聪明的分享 Kotlin Flows
    【科学文献计量】利用python将中国知网文献导出的文件整理为文献引用格式+摘要正文,并写入到Word中
    SpringCloud-04-Feign
    AMAZON LINUX/CENTOS 部署PYTHON+MYSQL+DJANGO项目流程记录
    【鸟哥杂谈】物联网体系知识梳理
    我的语言模型应该有多大?
    Mysql底层数据结构为什么选择B+树
  • 原文地址:https://blog.csdn.net/qq15035899256/article/details/126021777