Java互聯網架構-Spring Boot框架如何配置文件分析

概述

什麼是spring boot

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。用我的話來理解,就是spring boot其實不是什麼新的框架,它默認配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道這樣比喻是否合適)。

使用spring boot有什麼好處

其實就是簡單、快速、方便!平時如果我們需要搭建一個spring web項目的時候需要怎麼做呢?

1)配置web.xml,加載spring和spring mvc

2)配置數據庫連接、配置spring事務

3)配置加載配置文件的讀取,開啟註解

4)配置日誌文件

配置完成之後部署tomcat 調試

1、小試牛刀

1.1 隨機數

Spring Boot提供了RandomValuePropertySource幫助開發者在配置文件中直接生成隨機值,它很多場景都有用武之地,比如密鑰、測試用例等。這些隨機值可以是整數,longs或字符串,我們只需要在配置文件中定義即可:

#隨機字符串

buke.secret=${random.value}

#隨機int類型數字

buke.number=${random.int}

#隨機long類型數字

buke.bignumber=${random.long}

#隨機最大值

buke.ten=${random.int(10)}

#隨機範圍值

buke.range=${random.int[1024,65536]}

需要注意的是,每次配置文件加載後(即SpringApplication啟動run後),生成的隨機數編程固定值,除非再次重啟才會變更。

1.2 使用配置

使用也簡單,像如下代碼一樣,只需要在想要綁定自定義值的屬性上添加註解@Value(value = "${property}")即可。

@Value(value = "${buke.secret}")

public String secret;

1.3 綁定實體類

使用@Value("${property}")註解方式注入配置屬性有時候可能顯得比較笨重麻煩,尤其是需要使用多個properties或需要使用的數據本身有層次結構的時候。為了控制和property項目配置,Spring Boot提供一個允許使用自定義beans的替代方法來使用properties。

/**

* 自定義配置屬性綁定實體

* @author 漆可

* @date 2017年9月12日 下午8:30:35

*/

@Component

@ConfigurationProperties(prefix = "buke")

public class ConfigBean

{

private String secret;

private int number;

private long bignumber;

private int less;

private int range;

//getters setters ...

}

1.4 測試效果

我們寫個接口,測試綁定效果:

@RestController

public class ProperfileController

{

@Autowired

ConfigBean configBean;

@RequestMapping("/test")

public Object test()

{

Map<String, Object> map = new HashMap<>();

map.put("secret", configBean.getSecret());

map.put("number", configBean.getNumber());

map.put("bignumber", configBean.getBignumber());

map.put("less", configBean.getLess());

map.put("range", configBean.getRange());

return map;

}

}

上述代碼的只做了一件事情,獲取在配置文件中定義的隨機值,並通過接口放回給前端頁面顯示:

這裡寫圖片描述

1.5 替換者Yaml

Spring Boot支持並推薦使用Yaml配置文件。Yaml是Json的一個超集,與properties相比,它擁有數據的層級結構,又比XMl文件結構簡單。

注意字段分號:後面要加一個空格,不然無法讀取到該值。將上述application.properties文件改為Yaml格式的application.yml:

buke:

secret: ${random.value}

bignumber: ${random.long}

less: ${random.int(10)}

range: ${random.int[1024,65536]}

number: ${random.int}

需要指出的是,同級目錄上,properties配置的屬性會覆蓋Yaml屬性,而不是有些網上所說的Yaml覆蓋前者。

2 通過命令行設置屬性值

Spring Boot允許外化(externalize)項目配置,即不依靠項目本身的文件就可以改變、覆蓋的項目原先的配置文件內容,方便我們在不同的環境執行不同的配置內容。最常用的就是通過命令行修改配置參數。

在使用命令行運行jar包部署Spring Boot應用的時候,可以使用命令行設置屬性值。

java -jar xxx.jar --server.port=8090

如上命令行通過使用--server.port屬性設置xxx.jar應用的端口為8090。

在命令行運行時,採用--xxx=xxx的格式設置設置屬性值。連續的兩個減號--就是對application.properties中的屬性值進行賦值的標識。以上命令等價於我們在application.properties中添加屬性server.port=8090。可設置的的屬性值可以是我們自己定義的,也可以是Spring Boot中默認的參數。

通過命令行來修改屬性值固然提供了不錯的便利性,但是通過命令行就能更改應用運行的參數也是一種不安全的行為。我們可以在程序的啟動入口加上SpringApplication.setAddCommandLineProperties(false)來禁用命令行傳參。

3 應用的配置文件

3.1 應用文件的位置

spring會從以下位置加載application.properties或application.yml配置文件:

當前目錄下的一個/config子目錄

當前目錄

一個classpath下的/config包

classpath根路徑(root)

這個列表是按優先級排序的(列表中前面的將覆蓋後面的)。

3.2 修改配置文件名稱

我們可以通過重寫spring.config.name的值來修改配置文件的名稱application。

通過命令修改配置文件名稱:

$ java -jar xxx.jar --spring.config.name=myprofile

通過配置文件修改配置文件名稱:

spring.config.name=myprofile

或者這樣:

spring:

config:

name: myprofile

3.3 修改配置文件路徑

我們可以重寫spring.config.location指定配置文件具體的路徑(目錄位置或文件路徑列表以逗號分割)。

$ java -jar xxx.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

如果spring.config.location包含目錄(相對於文件),必須以/結尾表示該配置是個目錄,在加載前,spring.config.name配置的文件名稱會被追加到後面。

不管spring.config.location配置的是什麼值,默認的配置文件路徑classpath:,classpath:/config,file:,file:config/都會被使用。

這樣可以方便開發者,在該路徑路徑設置一些默認值,然後在運行的時候使用不同的文件覆蓋它,同時保留這些默認配置。

4、多環境配置

4.1 定義

我們在開發web項目時,通常同一套程序會被應用和安裝到幾個不同的環境,比如:開發、測試、生產等。當應用程序需要部署到不同運行環境時,一些配置細節通常會有所不同,最簡單的比如日誌級別,數據庫地址、服務器端口。這就使得我們在打包的時候頻繁的修改配置文件。

Profile配置,坊間戲稱多環境配置,也叫隔離環境配置。它是一種強大的配置方式,解決了我們以往由於不同的環境配置頻繁大量修改配置文件的問題。

4.2 多環境配置的方法

在Spring Boot中多環境配置文件名需要滿足application-{profile}.properties的格式,其中{profile}對應你的環境標識,比如:

application-dev.properties:開發環境

application-test.properties:測試環境

application-prod.properties:生產環境

想要加載某個配置文件,只需要在application.properties文件中通過spring.profiles.active屬性來設置,其值對應指定配置文件的{profile}值。

spring.profiles.active=test

比如: 以上設置就會加載application-test.properties配置文件內容。

當然,也可以通過命令行指定具體配置文件。

java -jar xxx.jar --spring.profiles.active=test

總結

到這裡,Spring Boot框架如何配置文件分析就結束了,,不足之處還望大家多多包涵!!覺得收穫的話可以點個關注收藏轉發一波喔,謝謝大佬們支持。(吹一波,233~~)

下面和大家交流幾點編程的經驗:

1、多寫多敲代碼,好的代碼與紮實的基礎知識一定是實踐出來的

2丶 測試、測試再測試,如果你不徹底測試自己的代碼,那恐怕你開發的就不只是代碼,可能還會聲名狼藉。

3丶 簡化編程,加快速度,代碼風騷,在你完成編碼後,應回頭並且優化它。從長遠來看,這裡或那裡一些的改進,會讓後來的支持人員更加輕鬆。

最後,每一位讀到這裡的網友,感謝你們能耐心地看完。希望在成為一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步。

內部交流群469717771 歡迎各位前來交流和分享, 驗證:(007)

概述

什麼是spring boot

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。用我的話來理解,就是spring boot其實不是什麼新的框架,它默認配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道這樣比喻是否合適)。

使用spring boot有什麼好處

其實就是簡單、快速、方便!平時如果我們需要搭建一個spring web項目的時候需要怎麼做呢?

1)配置web.xml,加載spring和spring mvc

2)配置數據庫連接、配置spring事務

3)配置加載配置文件的讀取,開啟註解

4)配置日誌文件

配置完成之後部署tomcat 調試

1、小試牛刀

1.1 隨機數

Spring Boot提供了RandomValuePropertySource幫助開發者在配置文件中直接生成隨機值,它很多場景都有用武之地,比如密鑰、測試用例等。這些隨機值可以是整數,longs或字符串,我們只需要在配置文件中定義即可:

#隨機字符串

buke.secret=${random.value}

#隨機int類型數字

buke.number=${random.int}

#隨機long類型數字

buke.bignumber=${random.long}

#隨機最大值

buke.ten=${random.int(10)}

#隨機範圍值

buke.range=${random.int[1024,65536]}

需要注意的是,每次配置文件加載後(即SpringApplication啟動run後),生成的隨機數編程固定值,除非再次重啟才會變更。

1.2 使用配置

使用也簡單,像如下代碼一樣,只需要在想要綁定自定義值的屬性上添加註解@Value(value = "${property}")即可。

@Value(value = "${buke.secret}")

public String secret;

1.3 綁定實體類

使用@Value("${property}")註解方式注入配置屬性有時候可能顯得比較笨重麻煩,尤其是需要使用多個properties或需要使用的數據本身有層次結構的時候。為了控制和property項目配置,Spring Boot提供一個允許使用自定義beans的替代方法來使用properties。

/**

* 自定義配置屬性綁定實體

* @author 漆可

* @date 2017年9月12日 下午8:30:35

*/

@Component

@ConfigurationProperties(prefix = "buke")

public class ConfigBean

{

private String secret;

private int number;

private long bignumber;

private int less;

private int range;

//getters setters ...

}

1.4 測試效果

我們寫個接口,測試綁定效果:

@RestController

public class ProperfileController

{

@Autowired

ConfigBean configBean;

@RequestMapping("/test")

public Object test()

{

Map<String, Object> map = new HashMap<>();

map.put("secret", configBean.getSecret());

map.put("number", configBean.getNumber());

map.put("bignumber", configBean.getBignumber());

map.put("less", configBean.getLess());

map.put("range", configBean.getRange());

return map;

}

}

上述代碼的只做了一件事情,獲取在配置文件中定義的隨機值,並通過接口放回給前端頁面顯示:

這裡寫圖片描述

1.5 替換者Yaml

Spring Boot支持並推薦使用Yaml配置文件。Yaml是Json的一個超集,與properties相比,它擁有數據的層級結構,又比XMl文件結構簡單。

注意字段分號:後面要加一個空格,不然無法讀取到該值。將上述application.properties文件改為Yaml格式的application.yml:

buke:

secret: ${random.value}

bignumber: ${random.long}

less: ${random.int(10)}

range: ${random.int[1024,65536]}

number: ${random.int}

需要指出的是,同級目錄上,properties配置的屬性會覆蓋Yaml屬性,而不是有些網上所說的Yaml覆蓋前者。

2 通過命令行設置屬性值

Spring Boot允許外化(externalize)項目配置,即不依靠項目本身的文件就可以改變、覆蓋的項目原先的配置文件內容,方便我們在不同的環境執行不同的配置內容。最常用的就是通過命令行修改配置參數。

在使用命令行運行jar包部署Spring Boot應用的時候,可以使用命令行設置屬性值。

java -jar xxx.jar --server.port=8090

如上命令行通過使用--server.port屬性設置xxx.jar應用的端口為8090。

在命令行運行時,採用--xxx=xxx的格式設置設置屬性值。連續的兩個減號--就是對application.properties中的屬性值進行賦值的標識。以上命令等價於我們在application.properties中添加屬性server.port=8090。可設置的的屬性值可以是我們自己定義的,也可以是Spring Boot中默認的參數。

通過命令行來修改屬性值固然提供了不錯的便利性,但是通過命令行就能更改應用運行的參數也是一種不安全的行為。我們可以在程序的啟動入口加上SpringApplication.setAddCommandLineProperties(false)來禁用命令行傳參。

3 應用的配置文件

3.1 應用文件的位置

spring會從以下位置加載application.properties或application.yml配置文件:

當前目錄下的一個/config子目錄

當前目錄

一個classpath下的/config包

classpath根路徑(root)

這個列表是按優先級排序的(列表中前面的將覆蓋後面的)。

3.2 修改配置文件名稱

我們可以通過重寫spring.config.name的值來修改配置文件的名稱application。

通過命令修改配置文件名稱:

$ java -jar xxx.jar --spring.config.name=myprofile

通過配置文件修改配置文件名稱:

spring.config.name=myprofile

或者這樣:

spring:

config:

name: myprofile

3.3 修改配置文件路徑

我們可以重寫spring.config.location指定配置文件具體的路徑(目錄位置或文件路徑列表以逗號分割)。

$ java -jar xxx.jar --spring.config.location=classpath:/default.properties,classpath:/override.properties

如果spring.config.location包含目錄(相對於文件),必須以/結尾表示該配置是個目錄,在加載前,spring.config.name配置的文件名稱會被追加到後面。

不管spring.config.location配置的是什麼值,默認的配置文件路徑classpath:,classpath:/config,file:,file:config/都會被使用。

這樣可以方便開發者,在該路徑路徑設置一些默認值,然後在運行的時候使用不同的文件覆蓋它,同時保留這些默認配置。

4、多環境配置

4.1 定義

我們在開發web項目時,通常同一套程序會被應用和安裝到幾個不同的環境,比如:開發、測試、生產等。當應用程序需要部署到不同運行環境時,一些配置細節通常會有所不同,最簡單的比如日誌級別,數據庫地址、服務器端口。這就使得我們在打包的時候頻繁的修改配置文件。

Profile配置,坊間戲稱多環境配置,也叫隔離環境配置。它是一種強大的配置方式,解決了我們以往由於不同的環境配置頻繁大量修改配置文件的問題。

4.2 多環境配置的方法

在Spring Boot中多環境配置文件名需要滿足application-{profile}.properties的格式,其中{profile}對應你的環境標識,比如:

application-dev.properties:開發環境

application-test.properties:測試環境

application-prod.properties:生產環境

想要加載某個配置文件,只需要在application.properties文件中通過spring.profiles.active屬性來設置,其值對應指定配置文件的{profile}值。

spring.profiles.active=test

比如: 以上設置就會加載application-test.properties配置文件內容。

當然,也可以通過命令行指定具體配置文件。

java -jar xxx.jar --spring.profiles.active=test

總結

到這裡,Spring Boot框架如何配置文件分析就結束了,,不足之處還望大家多多包涵!!覺得收穫的話可以點個關注收藏轉發一波喔,謝謝大佬們支持。(吹一波,233~~)

下面和大家交流幾點編程的經驗:

1、多寫多敲代碼,好的代碼與紮實的基礎知識一定是實踐出來的

2丶 測試、測試再測試,如果你不徹底測試自己的代碼,那恐怕你開發的就不只是代碼,可能還會聲名狼藉。

3丶 簡化編程,加快速度,代碼風騷,在你完成編碼後,應回頭並且優化它。從長遠來看,這裡或那裡一些的改進,會讓後來的支持人員更加輕鬆。

最後,每一位讀到這裡的網友,感謝你們能耐心地看完。希望在成為一名更優秀的Java程序員的道路上,我們可以一起學習、一起進步。

內部交流群469717771 歡迎各位前來交流和分享, 驗證:(007)

Java互聯網架構-Spring Boot框架如何配置文件分析

相關推薦

推薦中...