SpringBoot配置文件

概述

初始化Spring Boot项目时,在resources目录下有一个默认的全局配置文件 application.properties。SpringBoot通过配置文件来修改SpringBoot自动配置的默认值

  • SpringBoot支持两种格式的配置文件 application.ymlapplication.properties

application.properties 写法

application.properties 配置文件写法如下

key = value

定义类型如下

  • 定义属性
    • student.name=王五
      student.age=23
  • 定义数组(list、set)
    • student.course=Japanese,Chinese,Russian
      
      或者如下方式
      student.course[0]=Japanese
      student.course[1]=Chinese
      student.course[2]=Russian
  • 定义map
    • student.family.fatherName=张三
      student.family.motherName=李四
      
      或者下面这种写法
      student.family={"fatherName":"张三","motherName":"李四"}
  • 引用其他配置属性
    • server.port=8080
      server.path=127.0.0.1:${server.port}

application.yml 写法

application.yml 配置文件的语法是:key: value使用冒号代替等号,同时冒号后面需要跟上一个空格符

定义类型如下

  • 定义属性
    • student:
        name: 王五
        age: 22
  • 定义数组(list、set):用 - 值表示数组中的一个元素
    • student:
        course:
          - English
          - Chinese
          
      或者行内写法
      student:
        course: [English,Chinese]
  • 定义map
    • student:
        family:
          fatherName: 张三
          mother: 李四
          
      或者行内写法
      student:
        family: {"fatherName":"张三","mother":"李四"}
  • 引用其他配置属性
    • server:
        port: 8080
        path: 127.0.0.1:${server.port} 

注意事项

  1. 字面直接写
  2. 字符串默认不用加上单引号或者双引号
    1.  双引号不会转义字符串里面的特殊字符;特殊字符会作为本身想表示的意思,比如:name: "张三 \n 王五" 会出现换行
    2.  单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据 ,比如:name: '张三 \n 王五' 不会出现换行

读取配置文件的值

使用配置文件中的值,有以下几种方式

  • 使用 @Value
  • 使用 @ConfigurationProperties
@Data
@Configuration
public class Student{
    
    @Value("${student.name}")
    private String name;
    
    @Value("${student.age}")
    private Integer age;
    
    @Value("#{${student.family}}")
    private Map<String,String> family;
    
    @Value("${student.course}")
    private List<String> course;
    
}
@Data
@Configuration
@ConfigurationProperties(prefix = "student")
public class Student{
    
    private String name;
    
    private Integer age;
    
    private Map<String,String> family;
    
    private List<String> course;
    
}
  • @ConfigurationProperties 注解向 Spring Boot 声明该类中的所有属性和配置文件中相关的配置进行绑定 
    • prefix = ""声明配置前缀,将该前缀下的所有属性进行映射
  • @Component 或者@Configuration将该组件加入 Spring Boot 容器,只有这个组件是容器中的组件,配置才生效

自定义配置文件

除了在默认的 application 文件进行属性配置,还可以自定义配置文件,在配置类中使用@PropertySource注解注入该配置文件即可使用(该注解不支持注入yml文件)。例如如下配置文件 student.properties

student.name=王五
@Data
@Configuration
@ConfigurationProperties(prefix="student")
@PropertySource(value = "classpath:student.properties")
public class Student{
    private String name;
}

@ImportResource该注解导入 Spring 的 xml 配置文件,让配置文件里面的内容生效

  • @ImportResource(locations = {"classpath:StudentBeans.xml"})
posted @ 2023-05-22 22:13  伊文小哥  阅读(169)  评论(0编辑  收藏  举报