一篇文章带你搞懂 SpringBoot 的配置文件

一、SpringBoot 配置文件类型

1. SpringBoot配置文件类型和作用

SpringBoot 是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用 application.properties或者application.yml(application.yaml)进行配置。

SpringBoot 默认会从 Resources 目录下加载 application.propertiesapplication.yml(application.yaml)文件

其中,application.properties文件是键值对类型的文件,具体可参考
除了properties文件外,SpringBoot 还可以使用 yml 文件进行配置,下面对 yml 文件进行讲解。

虽然 properties 文件比较常见,但是相对于 properties 而言,yaml 更加简洁明了,而且使用的场景也更多,很多开源项目都是使用 yaml 进行配置(例如 Hexo)。除了简洁,yaml 还有另外一个特点,就是 yaml 中的数据是有序的,properties 中的数据是无序的,在一些需要路径匹配的配置中,顺序就显得尤为重要,此时我们一般采用 yaml。

2. application.yml配置文件

(1)yml配置文件简介
YML 文件格式是 YAML (YAML Aint Markup Language) 编写的文件格式,YAML 是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持 YAML 库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。

YML文件是以数据为核心的,比传统的xml方式更加简洁。

YML文件的扩展名可以使用.yml或者.yaml

(2)yml 配置文件的语法

  • 配置普通数据
    语法:key: value
    注意:value之前有一个空格
name: yolo
  • 配置对象数据
    注意:下面 key1前面的空格个数不限定,在yml语法中,相同缩进代表同一个级别
语法:
	key:
		key1: value1
		key2: value2
	或者:key: {key1: value1,key2: value2}
例如:
person:
  name: yolo
  age: 19
  addr: shanghai
或者:person: {name: yolo,age: 18,addr: beijing}
  • 配置数据、集合(普通字符串)
city:
  - beijing
  - tianjin
  - chongqing
  - shanghai

或者 city: [beijing,tianjin,chongqing,shanghai]
  • 配置数据、集合(对象数据)
student:
  - name: tom1
    age: 18
    addr: beijing
  - name: tom2
    age: 17
    addr: tianjin

#student: [{name: tom1,age: 18,addr: beijing},{name: tom2,age: 17,addr: tianjin}]
  • Map 配置
map:
  key1: value1
  key2: value2

3. SpringBoot配置信息的查询

SpringBoot 的配置文件,主要的目的就是对配置信息进行修改的,但在配置时的 key 可以查阅SpringBoot的官方文档:文档URL

常用的配置信息:

# QUARTZ SCHEDULER (QuartzProperties)
spring.quartz.jdbc.initialize-schema=embedded # Database schema initialization mode.
spring.quartz.jdbc.schema=classpath:org/quartz/impl/jdbcjobstore/tables_@@platform@@.sql # Path to the SQL file to use to initialize the database schema.
spring.quartz.job-store-type=memory # Quartz job store type.
spring.quartz.properties.*= # Additional Quartz Scheduler properties.

# ----------------------------------------
# WEB PROPERTIES
# ----------------------------------------
# EMBEDDED SERVER CONFIGURATION (ServerProperties)
server.port=8080 # Server HTTP port.
server.servlet.context-path= # Context path of the application.
server.servlet.path=/ # Path of the main dispatcher servlet.

# HTTP encoding (HttpEncodingProperties)
spring.http.encoding.charset=UTF-8 # Charset of HTTP requests and responses. Added to the "Content-Type" header if not set explicitly.

# SPRING MVC (WebMvcProperties)
spring.mvc.servlet.load-on-startup=-1 # Load on startup priority of the dispatcher
servlet.
spring.mvc.static-path-pattern=/** # Path pattern used for static resources.
spring.mvc.view.prefix= # Spring MVC view prefix.
spring.mvc.view.suffix= # Spring MVC view suffix.

# DATASOURCE (DataSourceAutoConfiguration & DataSourceProperties)
spring.datasource.driver-class-name= # Fully qualified name of the JDBC driver. Autodetected based on the URL by default.
spring.datasource.password= # Login password of the database.
spring.datasource.url= # JDBC URL of the database.
spring.datasource.username= # Login username of the database.

# JEST (Elasticsearch HTTP client) (JestProperties)
spring.elasticsearch.jest.password= # Login password.
spring.elasticsearch.jest.proxy.host= # Proxy host the HTTP client should use.
spring.elasticsearch.jest.proxy.port= # Proxy port the HTTP client should use.
spring.elasticsearch.jest.read-timeout=3s # Read timeout.
spring.elasticsearch.jest.username= # Login username.

我们可以通过配置application.poperties 或者 application.yml 来修改SpringBoot的默认配置

二、配置文件与配置类的属性映射方式

1. 使用注解@Value映射

在这里插入图片描述

package yolo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Value("${name}")
    private String username;
    @Value("${person.age}")
    private Integer age;

    @RequestMapping("/person")
    public String getPerson() {
        return "username = " + username + " age = " + age;
    }
}

在这里插入图片描述

2. 使用注解@ConfigurationProperties映射

通过注解@ConfigurationProperties(prefix="配置文件中的key的前缀")可以将配置文件中的配置自动与实体进行映射

这里使用@ConfigurationProperties("person"),注意对于person 对应application.ym 中的 person对象, 同时属性需要有对应的 get 和 set 方法:
在这里插入图片描述

package yolo.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@ConfigurationProperties("person")
public class UserController {
    private String name;
    private Integer age;
    @RequestMapping("/person")
    public String getPerson() {
        return "username = " + name + " age = " + age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
}

IDEA 出现:点击 Open Documentation
在这里插入图片描述
将这个依赖添加到 pom 文件中即可:此时再使用 ym 文件中时会给一定的提示,也就是在使用类和 ym 文件建立了一个联系。

 <!--@ConfiguaritionProperties的执行器的配置-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章