国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

愛(ài)網(wǎng)站網(wǎng)站查詢鄭州seo課程

愛(ài)網(wǎng)站網(wǎng)站查詢,鄭州seo課程,國(guó)內(nèi)著名網(wǎng)站建設(shè)公司,期貨網(wǎng)站做模擬一、配置文件作用 整個(gè)項(xiàng)目中所有重要的數(shù)據(jù)都是在配置文件中配置的,比如: 數(shù)據(jù)庫(kù)的連接信息(包含用戶名和密碼的設(shè)置); 項(xiàng)目的啟動(dòng)端口; 第三方系統(tǒng)的調(diào)用秘鑰等信息; 用于發(fā)現(xiàn)和定位問(wèn)題的…

一、配置文件作用

整個(gè)項(xiàng)目中所有重要的數(shù)據(jù)都是在配置文件中配置的,比如:

  • 數(shù)據(jù)庫(kù)的連接信息(包含用戶名和密碼的設(shè)置);

  • 項(xiàng)目的啟動(dòng)端口;

  • 第三方系統(tǒng)的調(diào)用秘鑰等信息;

  • 用于發(fā)現(xiàn)和定位問(wèn)題的普通日志和異常日志等。

想象一下如果沒(méi)有配置信息,那么 Spring Boot 項(xiàng)目就不能連接和操作數(shù)據(jù)庫(kù),甚至是不能保存可以用于排查問(wèn)題的關(guān)鍵日志,所以配置文件的作用是非常重要的


二、配置文件的分類

  1. 系統(tǒng)的配置文件,比如連接字符串、比如日志的相關(guān)設(shè)置,是系統(tǒng)定義好的

  2. 用戶自定義的


三、配置文件的格式與規(guī)則

1、格式

Spring Boot 配置文件主要分為以下兩種格式:
.properties
.yml

在這里插入圖片描述

這就好像連鎖店里面的統(tǒng)一服裝一樣,有兩種不同的款式,properties 類型的配置文件就屬于老款“服飾”,也是創(chuàng)建 Spring Boot 項(xiàng)目時(shí)默認(rèn)的文件格式(主要是由于倉(cāng)庫(kù)里還有庫(kù)存),而 yml 屬于新版款式,如果用戶了解情況直接指定要新款服飾,那么就直接發(fā)給他


2、規(guī)則

  1. 理論上講 properties 可以和 yml 一起存在于一個(gè)項(xiàng)目當(dāng)中,當(dāng) properties 和 yml 一起存在一個(gè)項(xiàng)目中時(shí),如果配置文件中出現(xiàn)了同樣的配置,比如 properties 和 yml 中都配置了“server.port”,那么這個(gè)時(shí)候會(huì)以 properties 中的配置為主,也就是 .properties 配置文件的優(yōu)先級(jí)最高,但加載完 .properties 文件之后,也會(huì)加載 .yml 文件的配置信息。

  2. 雖然理論上來(lái)講 .properties 可以和 .yml 共存,但實(shí)際的業(yè)務(wù)當(dāng)中,我們通常會(huì)采取一種統(tǒng)一的配置文件格式,這樣可以更好的維護(hù)(降低故障率),減少開發(fā)者難度。這就好像連鎖店的服飾一樣,不管是老款的服裝還是新款的服裝,一定要統(tǒng)一了才好看在這里插入圖片描述


3、為配置文件安裝提示插件

如果 properies 文件沒(méi)有提升信息,那么就需要安裝spring tools插件了

IDEA 社區(qū)版安裝 Spring Assistant 插件之后,就可以正常創(chuàng)建 Spring Boot 項(xiàng)目了,并且 yml 的配置文件就有提示了。但默認(rèn)情況下是不?持 properties 格式的日志提示的,這個(gè)時(shí)候需要安裝了 SpringTools 插件才會(huì)有相應(yīng)的提示

在這里插入圖片描述


四、讀取配置文件

1、properties

1.1、properties 配置文件說(shuō)明

properties 配置文件是最早期的配置文件格式,也是創(chuàng)建 Spring Boot 項(xiàng)目默認(rèn)的配置文件


1.1、properties 基本語(yǔ)法

properties 是以鍵值的形式配置的,key 和 value 之間是以 “=” 連接的key=value,如 application.properties:

# 系統(tǒng)的配置文件
server.port=9090
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8mb4&useSSL=true
characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123# 自定義配置項(xiàng)
cctalk.token=xxx

想要查看 Spring Boot 更多系統(tǒng)配置項(xiàng),訪問(wèn)官網(wǎng):Common Application Properties

PS:不加空格,可能會(huì)被當(dāng)做 value 的一部分

小技巧:配置文件中使用“#”來(lái)添加注釋信息


1.2、關(guān)于 properies 中文亂碼的問(wèn)題處理

1). 配置當(dāng)前項(xiàng)目中文亂碼的問(wèn)題 Settings

2). 配置新創(chuàng)建項(xiàng)目的中文亂碼問(wèn)題 New Projects Settings

在這里插入圖片描述

3). 將原來(lái)的 application. properies 刪除掉,重新再創(chuàng)建一個(gè) application. properieso

因?yàn)橹暗呐渲梦募呀?jīng)是不支持中文編碼的文件格式化,設(shè)置編碼再創(chuàng)建 application.properies 之后,所以后設(shè)置的編碼不會(huì)改變?cè)瓉?lái)的舊的 application.properies 文件,所以需要先將之前的配置文件刪除掉重新創(chuàng)建。

經(jīng)過(guò)上面的 3 步之后才能創(chuàng)建一個(gè)不是中文亂碼的 application. properies 文件,并且以后在創(chuàng)建 application. properies 不會(huì)出現(xiàn)中文亂碼


1.3、讀取配置文件

如果在項(xiàng)目中,想要主動(dòng)的讀取配置文件中的內(nèi)容,可以使用 @Value 注解來(lái)實(shí)現(xiàn)。
@Value 注解使用 “${}” 的格式讀取,如下代碼所示

@Controller
public class UserController {@Value("${server.port}") // 讀取配置項(xiàng)private String port;@ResponseBody@RequestMapping("/sayhi")public String sayhi() {return "hello, word —— port: " + port;}
}

訪問(wèn) http://localhost:8080/sayhi,最終執(zhí)行效果:hello, word —— port: 8080

@Component 在 Spring Boot 啟動(dòng)時(shí)候會(huì)注入到框架中,注入到框架中時(shí)會(huì)執(zhí)行 @PostConstruct 初始化方法,這個(gè)時(shí)候就能讀取到配置信息了

1.4、properties 缺點(diǎn)分析

讀取多個(gè)配置文件:

在這里插入圖片描述

properties 配置是以 key-value 的形式配置的

從上述配置key看出,properties 配置文件中會(huì)有很多的冗余的信息:

spring.datasource.username=root
spring.datasource.password=123

想要解決這個(gè)問(wèn)題,就可以使用 yml 配置文件的格式化了


2、yml

2.1、yml 配置文件說(shuō)明

  • yml 是 YAML 是縮寫,它的全稱 Yet Another Markup Language 翻譯成中文就是 “另一種標(biāo)記語(yǔ)言”

  • yml 是一個(gè)寫法簡(jiǎn)單,可讀性高,易于理解,用來(lái)表達(dá)數(shù)據(jù)序列化的格式。它的語(yǔ)法和其他高級(jí)語(yǔ)言類似,

  • 支持更多的數(shù)據(jù)類型,可以簡(jiǎn)單表達(dá)清單(數(shù)組)、散列表,標(biāo)量等數(shù)據(jù)形態(tài)。它使用空白符號(hào)縮進(jìn)和大量依賴外觀的特色,特別適合用來(lái)表達(dá)或編輯數(shù)據(jù)結(jié)構(gòu)、各種配置文件等。

  • yml 最大的優(yōu)勢(shì)是可以跨語(yǔ)言,不止是 Java 中可以使用 golang、python 都可以使用 yaml 作為配置文件


2.2、yml 基本語(yǔ)法

yml 是樹形結(jié)構(gòu)的配置文件,它的基礎(chǔ)語(yǔ)法是“key: value”,注意 key 和 value 之間使用英文冒汗加空格的方式組成的,其中的空格不可省略。

基礎(chǔ)語(yǔ)法如下:

其中第一項(xiàng)的配置為正確的,key 也是高亮顯示的,而第二項(xiàng)沒(méi)有空格是錯(cuò)誤的使用方式,第二項(xiàng)的key 也沒(méi)有高亮顯示

在這里插入圖片描述

2.3、使用 yml 連接數(shù)據(jù)庫(kù)

application.yml:

# 連接數(shù)據(jù)庫(kù)
spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8mb4&useSSL=truename: rootpassword: 123

yml 和 properties 連接數(shù)據(jù)庫(kù)的配置對(duì)比:

在這里插入圖片描述


3、yml 使用進(jìn)階

3.1 yml 配置不同數(shù)據(jù)類型及 null

# 字符串
string.value: Hello# 布爾值,truefalse
boolean.value: true
boolean.value1: false# 整數(shù)
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # 二進(jìn)制# 浮點(diǎn)數(shù)
float.value: 3.14159
float.value1: 314159e-5 # 科學(xué)計(jì)數(shù)法# Null~代表null
null.value: ~

3.2、配置讀取

yml 讀取配置的方式和 properties 相同,使用 @Value 注解即可,實(shí)現(xiàn)代碼如下:

@Component
public class ReadYml {@Value("${string.hello}")private String hello;@PostConstructpublic void postConstruct() {System.out.println("Read YML,Hello:" + hello);}
}

使用代碼測(cè)試一下,讀取值為 null 的配置和根本不存在的配置結(jié)果是否一致?


3.3、value 值加單雙引號(hào)

字符串默認(rèn)不用加上單引號(hào)或者雙引號(hào),如果加英文的單雙引號(hào)可以表示特殊的含義

嘗試在 application.yml 中配置如下信息:

mystring1: hello\nword
mystring2: 'hello\nword'
mystring3: "hello\nword"

讀取程序?qū)崿F(xiàn)代碼如下:

@Controller
public class UserController {@Value("${mystring1}") // 讀取配置項(xiàng)private String mystring1;@Value("${mystring2}")private String mystring2;@Value("${mystring3}")private String mystring3;@ResponseBody@RequestMapping("/sayhi")public String sayhi() {System.out.println("mystring1: " + mystring1);System.out.println("mystring2: " + mystring2);System.out.println("mystring3: " + mystring3);}
}

訪問(wèn) http://localhost:8080/sayhi,執(zhí)行結(jié)果:

在這里插入圖片描述

如果在 mystring3 中加入轉(zhuǎn)義符 \mystring3: "hello\\nword"

結(jié)果:mystring3: hello\nword

從上述結(jié)果可以看出:

  • 字符串默認(rèn)不用加上單引號(hào)或者雙引號(hào)
  • 單引號(hào)會(huì)轉(zhuǎn)義特殊字符,特殊字符最終只是一個(gè)普通的字符串?dāng)?shù)據(jù)
  • 如果不加,或者加了單引號(hào),那么默認(rèn)會(huì)將字符串中的特殊字符進(jìn)行轉(zhuǎn)義,比如\n -> \ ln(轉(zhuǎn)義)處理
  • yml 中如果使用了雙引號(hào)就會(huì)按照(原)語(yǔ)義執(zhí)行,雙引號(hào)不會(huì)轉(zhuǎn)義字符串里面的特殊字符;特殊字符會(huì)作為本身想表示的意思

3.4、yml 對(duì)象配置和讀取

——application.yml:

# 對(duì)象寫法 1:
student:id: 1name: 張三age: 20# 對(duì)象寫法 2:行內(nèi)寫法(與上面的寫法作用一致)
student2: {id: 2,name: 李四,age: 20}

這個(gè)時(shí)候就不能用 @Value 來(lái)讀取配置中的對(duì)象了,此時(shí)要使用另一個(gè)注解 @ConfigurationProperties
來(lái)讀取 常見類 Student,具體實(shí)現(xiàn)如下:

@Data 中包含了 getter,setter,toString 等

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Data
@ConfigurationProperties(prefix = "student") // 讀取配置文件中的對(duì)象 在項(xiàng)目啟動(dòng)時(shí)讀取
@Component // 不能省略
public class Student {private int id;private String name;private int age;
}

——調(diào)用類的實(shí)現(xiàn)如下:

@Controller
public class UserController {@Autowiredprivate Student student; // 屬性注入@ResponseBody@RequestMapping("/sayhi")public String sayhi() {return "student: " + student;}
}

訪問(wèn),執(zhí)行效果:student: Student(id=1, name=張三, age=20)

讀李四:修改Student 類:@ConfigurationProperties(prefix = “student2”)。


3.5、yml 配置集合

——application.yml:

# 集合寫法 1:
dbtypes:
name:- mysql- sqlserver- db2# 集合寫法 2:行內(nèi)寫法(與上面的寫法作用一致)
dbtype: {name: [mysql,sqlserver,db2]}

——集合的讀取和對(duì)象一樣,也是使用 @ConfigurationProperties 來(lái)讀取的,創(chuàng)建類 ReadList 具體實(shí)現(xiàn)如下:

@Component
@Data
@ConfigurationProperties("dbtype") // 讀取配置文件中的集合
public class ReadList {private List<String> name;
}

——打印類的實(shí)現(xiàn)如下:

@Controller
public class UserController {@Resourceprivate ReadList readList;@ResponseBody@RequestMapping("/sayhi")public String sayhi() {return "readList: " + readList.getName();}
}

訪問(wèn),執(zhí)行效果:readList: [mysql, sqlserver, db2]


4、properties VS yml 總結(jié)

properties 是以 key=value 的形式配置的鍵值類型的配置文件,而 yml 使用的是類似 json 格式的樹形配置方式進(jìn)行配置的,yml 層級(jí)之間使用換行縮進(jìn)的方式配置,key 和 value 之間使用“: ”英文冒號(hào)加空格的方式設(shè)置,并且空格不可省略。

properties 為早期并且默認(rèn)的配置文件格式,但其配置存在一定的冗余數(shù)據(jù),使用 yml 可以很好的解決數(shù)據(jù)冗余的問(wèn)題。

yml 通用性更好,?持更多語(yǔ)言,如 Java、Go、Python 等,如果是云服務(wù)器開發(fā),可以使用一份配置文件作為 Java 和 Go 的共同配置文件。

yml 雖然可以和 properties 共存,但一個(gè)項(xiàng)目中建議使用統(tǒng)一的配置類型文件


五、SpringBoot有幾種讀取配置文件的方法?

Spring Boot 中讀取配置文件有以下 5 種方法:

  1. 使用@Value 讀取配置文件

  2. 使用@ConfigurationProperties讀取配置文件

  3. 使用Environment讀取配置文件

  4. 使用@PropertySource 讀取配置文件

    使用@PropertySource 注解可以用來(lái)指定讀取某個(gè)配置文件,比如指定讀取application.properties配置文件的配置內(nèi)容

    @PropertySource 注解默認(rèn)只支持 properties 格式配置文件的讀取

@springBootApplication
@PropertySource( "classpath:application.properties", encoding="utf-8")
public class DemoApplication implements InitializingBean {@Value("${profile.name}")private string name;public static void main(String[ ] args) {SpringApplication.run(DemoApplication.class, args );}@Overridepublic void afterPropertiesSet( ) throws Exception {System.out.println("Name: " +name ) ;}
  1. 使用原生方式讀取配置文件

http://aloenet.com.cn/news/39724.html

相關(guān)文章:

  • 購(gòu)物網(wǎng)站建設(shè)教程關(guān)鍵詞推廣效果
  • 天津個(gè)人網(wǎng)站建設(shè)廊坊seo優(yōu)化排名
  • 志愿者管理網(wǎng)站開發(fā)的需求分析 基于 java廣告接單平臺(tái)有哪些
  • 南沙網(wǎng)站建設(shè)小說(shuō)搜索風(fēng)云榜
  • 懷集建設(shè)房管部門網(wǎng)站淘寶美工培訓(xùn)
  • 江西景德鎮(zhèn)建設(shè)廳網(wǎng)站seo行業(yè)崗位
  • 江西會(huì)昌建設(shè)局網(wǎng)站建站軟件可以不通過(guò)網(wǎng)絡(luò)建設(shè)嗎
  • 網(wǎng)站管理系統(tǒng)后臺(tái)不能發(fā)布文章了網(wǎng)絡(luò)營(yíng)銷顧問(wèn)
  • 石家莊網(wǎng)站制作公司最大的中文搜索引擎
  • 網(wǎng)站設(shè)計(jì)制作系統(tǒng)哪個(gè)好搜索引擎優(yōu)化的根本目的
  • 制作網(wǎng)站哪里好廣告投放方案
  • 網(wǎng)站 切圖中國(guó)疫情最新情況
  • 工業(yè)設(shè)計(jì)和產(chǎn)品設(shè)計(jì)哪個(gè)好seo關(guān)鍵詞優(yōu)化軟件合作
  • 如何查公司的工商注冊(cè)信息網(wǎng)站推廣與優(yōu)化方案
  • 深圳企業(yè)網(wǎng)站制作哪家好百度搜索引擎收錄
  • 做網(wǎng)站人太原網(wǎng)站建設(shè)制作
  • 網(wǎng)站哪個(gè)公司好南寧seo外包要求
  • vue做網(wǎng)站的實(shí)例網(wǎng)絡(luò)培訓(xùn)心得
  • 北關(guān)網(wǎng)站制作百度推廣官方
  • 打字做任務(wù)賺錢的網(wǎng)站什么都不懂能去干運(yùn)營(yíng)嗎
  • 模板網(wǎng)站和定制網(wǎng)站影響排名seo推廣代理
  • 有什么網(wǎng)站可以做初中試題怎么做app推廣和宣傳
  • 做時(shí)時(shí)彩網(wǎng)站百度搜索關(guān)鍵詞排名優(yōu)化技術(shù)
  • 精品課程網(wǎng)站建設(shè)方案安卓aso優(yōu)化工具
  • 有做貨 物的網(wǎng)站嗎今天新聞?lì)^條新聞
  • 建設(shè)什么網(wǎng)站新品推廣活動(dòng)方案
  • 國(guó)內(nèi)做的好的電商網(wǎng)站有哪些方面百度在線使用網(wǎng)頁(yè)版
  • 自己做的網(wǎng)站可以用于百度推廣嗎線上營(yíng)銷推廣方案有哪些
  • nginx wordpress ssl網(wǎng)站排名優(yōu)化外包公司
  • 怎么做監(jiān)測(cè)網(wǎng)站的瀏覽量app推廣地推接單網(wǎng)