SpringBoot實戰 | 配置文件詳解

微信公衆號:一個優秀的廢人
如有問題或建議,請後臺留言,我會盡力解決你的問題。

前言

如題,今天解析下 SpringBoot 的配置文件。

自定義屬性加載

首先構建 SpringBoot 項目,不會的看這篇舊文 使用 IDEA 構建 Spring Boot 工程

首先在項目根目錄下加入以下自定義屬性:

# 防止讀取亂碼
spring.http.encoding.charset=UTF-8
# 項目啓動端口
server.port=9999
# 自定義配置
com.nasus.author.name=一個優秀的廢人
com.nasus.article.title=SpringBoot配置文件詳解

使用 @value 註解讀取配置文件屬性:

package com.nasus.bean;

import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

/**
 * Project Name:springboot_properties_demo <br/>
 * Package Name:com.nasus.properties <br/>
 * Date:2019/1/28 20:59 <br/>
 * <b>Description:</b> TODO: 描述該類的作用 <br/>
 * @author <a href="[email protected]">nasus</a><br/>
 */

@Data
@Component
public class PropertiesBean {

    @Value("${com.nasus.author.name}")
    private String name;

    @Value("${com.nasus.article.title}")
    private String title;

    @Value("${com.nasus.doing}")
    private String desc;

}

之後新建 controller 測試自定義屬性加載,代碼如下:

package com.nasus.controller;

import com.nasus.bean.PropertiesBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Project Name:springboot_properties_demo <br/>
 * Package Name:com.nasus.controller <br/>
 * Date:2019/1/28 21:41 <br/>
 * <b>Description:</b> TODO:  測試自定義屬性加載<br/>
 *
 * @author <a href="[email protected]">nasus</a><br/>
 */
@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private PropertiesBean propertiesBean;

    @GetMapping("/getInfo")
    public PropertiesBean getInfo(){
        return propertiesBean;
    }
}

訪問 http://localhost:8080/test/getInfo 查看加載結果:

測試結果

可以看到,加入 @value 註解之後,配置文件的屬性都被讀取出來了。以前,或許我們還需要專門寫一個讀取配置文件的工具類才能把屬性讀取出來,現在有了 Spring ,我們可以直接使用 @value 就能讀取了,簡直不能太方便。本例源碼在這:github 地址

參數間的引用

配置文件代碼如下:

# 防止讀取亂碼
spring.http.encoding.charset=UTF-8
# 項目啓動端口
server.port=9999
# 自定義配置
com.nasus.author.name=一個優秀的廢人
com.nasus.article.title=SpringBoot配置文件詳解

com.nasus.doing=${com.nasus.author.name}寫文章《${com.nasus.article.title}》

可以看到最後一個參數配置使用了前兩個的參數配置,測試結果如下:
測試結果

使用隨機數

有時項目需求,可能我們需要配置一些隨機數,比如說爲了安全而隨機配置的服務器端口,以及登錄密鑰。這時我們就可以用 SpringBoot 的 random 屬性來配置隨機數,比如:

# 隨機字符串
com.nasus.article.value=${random.value}
# 隨機int
com.nasus.article.number=${random.int}
# 隨機long
com.nasus.article.bignumber=${random.long}
# 10以內的隨機數
com.nasus.article.test1=${random.int(10)}
# 10-20的隨機數
com.nasus.article.test2=${random.int[10,20]}

使用多配置文件

很多時候我們開發項目都需要很多套環境,比如有測試環境,開發環境以及生產環境。不同的環境就需要使用不同的配置文件,爲此我們可以根據這 3 個環境分別新建 以下 3 個配置文件。

application-dev.properties:開發環境
application-test.properties:測試環境
application-prod.properties:生產環境

項目中默認的配置文件是 application.properties 。這時我們可以根據自己的環境去使用相應的配置文件,比如說,項目各個環境的端口必須不一樣。那我們可以這樣配置:
application-dev.properties:開發環境

server.port=6666

application-test.properties:測試環境

server.port=7777

application-prod.properties:生產環境

server.port=8888

假如,現在我打包上線,那就必須用生產環境的配置文件了,這時我們可以在 默認的配置文件 application.properties 中加入以下配置即可

spring.profiles.active=prod

配置數據庫

SpringBoot 的配置文件有兩種格式,一種是 .properties 格式(以上栗子都是用的這種)還有一種用的是 .yaml 格式。以下是用 yaml 方式配置。這兩種格式並無好壞之分,純看個人使用習慣。我就比較喜歡 yaml 格式,因爲看起來比較簡潔。

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&serverTimezone=UTC&useSSL=true
    username: 你的數據庫名稱
    password: 你的數據庫密碼

  jpa:
    hibernate:
      ddl-auto: update   #ddl-auto:設爲update 表示每次都重新建表
    show-sql: true

注意事項

  1. 使用 yaml 格式需要注意一點就是 鍵值對冒號後面,必須空一格
  2. application.properties 配置中文值的時候,讀取出來的屬性值會出現亂碼問題。但是 application.yml 不會出現亂碼問題。原因是,Spring Boot 是以 iso-8859 的編碼方式讀取 application.properties 配置文件。

解決第二點,只需加入 spring.http.encoding.charset=UTF-8 配置即可。

後語

以上就是我對 SpringBoot 配置文件的理解與使用,當然以上只是介紹了一下 SpringBoot 配置文件的幾個用法,它的用法還有非常多,想要深入使用還是需要各位多多深入實踐。最後,對 Python 、Java 感興趣請長按二維碼關注一波,我會努力帶給你們價值,如果覺得本文對你哪怕有一丁點幫助,請幫忙點好看,讓更多人知道。

另外,關注之後在發送 1024 可領取免費學習資料。資料內容詳情請看這篇舊文:Python、C++、Java、Linux、Go、前端、算法資料分享

一個優秀的廢人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章