近两年火热的微服务springboot不同配置文件详细讲解
點(diǎn)擊上方“好好學(xué)java”,選擇“置頂公眾號”
優(yōu)秀學(xué)習(xí)資源、干貨第一時間送達(dá)!
?精彩內(nèi)容?
java實戰(zhàn)練習(xí)項目教程
2018微服務(wù)資源springboot、springcloud、docker、dubbo實戰(zhàn)等傾心分享
2018年java架構(gòu)師全套學(xué)習(xí)教程
最新大數(shù)據(jù)培訓(xùn)完整視頻教程
2018年java最新全套培訓(xùn)學(xué)習(xí)教程
一、配置文件
SpringBoot使用一個全局的配置文件,配置文件名是固定的
application.properties
application.yml
配置文件的作用:修改SpringBoot自動配置的默認(rèn)值;SpringBoot在底層都給我們自動配置好;
YAML(YAML Ain't Markup Language)
YAML是“YAML不是一種標(biāo)記語言”的外語縮寫 [1] ?(見前方參考資料原文內(nèi)容);但為了強(qiáng)調(diào)這種語言以數(shù)據(jù)做為中心,而不是以置標(biāo)語言為重點(diǎn),而用返璞詞重新命名。它是一種直觀的能夠被電腦識別的數(shù)據(jù)序列化格式,是一個可讀性高并且容易被人類閱讀,容易和腳本語言交互,用來表達(dá)資料序列的編程語言。
標(biāo)記語言:
以前的配置文件;大多都使用的是 xxxx.xml文件;
YAML:以數(shù)據(jù)為中心,比json、xml等更適合做配置文件;
YAML:配置例子
server:port:?8080如果是xml:
<server><port>8080</port> </server>二、YAML語法介紹
1、基本語法
k:(空格)v表示一對鍵值對(空格必須有)
以空格的縮進(jìn)來控制層級關(guān)系;只要是左對齊的一列數(shù)據(jù),都是同一個層級的
server:port:?8080path:?/hello屬性和值也是大小寫敏感;
2、值的寫法
字面量:普通的值(數(shù)字,字符串,布爾)
k: v:字面直接來寫;
字符串默認(rèn)不用加上單引號或者雙引號;
"":雙引號:不會轉(zhuǎn)義字符串里面的特殊字符;特殊字符會作為本身想表示的意思
name:?"sihai\n?lisi"輸出: sihai換行 lisi
'':單引號:會轉(zhuǎn)義特殊字符,特殊字符最終只是一個普通的字符串?dāng)?shù)據(jù)
name:?‘sihai\n?lisi’:輸出;sihai\n?lisi對象、Map(屬性和值)(鍵值對)
k: v:在下一行來寫對象的屬性和值的關(guān)系;注意縮進(jìn)
對象還是k: v的方式
行內(nèi)寫法:
user:?{name:?sihai,?age:?18}數(shù)組(List、Set)
用- 值表示數(shù)組中的一個元素
pets: -?cat -?dog -?pig行內(nèi)寫法:
pets:?[cat,dog,pig]三、配置文件值注入
配置文件
user:name:?sihaiage:?20lists:-?lisi-?zhangsanpig:name:?小豬age:?10在javabean中的使用:
/** *?將配置文件中配置的每一個屬性的值,映射到這個組件中 *? *?@ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關(guān)的配置進(jìn)行綁定; *? *?prefix?=?"person":配置文件中哪個下面的所有屬性進(jìn)行一一映射 * *?只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能; * */ @Component @ConfigurationProperties(prefix?=?"user") public?class?User{private?String?name;private?int?age;private?List<Object>?lists;private?Pig?pig; }另外,我們可以導(dǎo)入配置文件處理器,以后編寫配置就有提示了。
<!‐‐導(dǎo)入配置文件處理器,配置文件進(jìn)行綁定就會有提示‐‐> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional> </dependency>1、properties配置文件在idea中默認(rèn)utf-8亂碼解決
2、@Value獲取值和@ConfigurationProperties獲取值比較
| 功能 | 批量注入配置文件中的屬性 |
| 松散綁定(松散語法) | 支持 |
| SpEL | 不支持 |
| JSR303數(shù)據(jù)校驗 | 支持 |
| 復(fù)雜類型封裝 | 支持 不支持 |
到底如何在哪個場景使用這兩個獲取配置文件的值呢?
如果說,我們只是在某個業(yè)務(wù)邏輯中需要獲取一下配置文件中的某項值,使用@Value;
如果說,我們專門編寫了一個javaBean來和配置文件進(jìn)行映射,我們就直接使用@ConfigurationProperties;
3、配置文件注入值數(shù)據(jù)校驗
@Component @ConfigurationProperties(prefix?=?"user") public?class?User{//使用value獲取一個值@Value("${user.name}")private?String?name;private?int?age;private?List<Object>?lists;private?Pig?pig; }4、@PropertySource&@ImportResource&@Bean
@PropertySource:加載指定的配置文件
/** *?將配置文件中配置的每一個屬性的值,映射到這個組件中 *?@ConfigurationProperties:告訴SpringBoot將本類中的所有屬性和配置文件中相關(guān)的配置進(jìn)行綁定; *?prefix?=?"person":配置文件中哪個下面的所有屬性進(jìn)行一一映射 * *?只有這個組件是容器中的組件,才能容器提供的@ConfigurationProperties功能; *?@ConfigurationProperties(prefix?=?"person")默認(rèn)從全局配置文件中獲取值; * */ @PropertySource(value?=?{"classpath:user.properties"}) @Component @ConfigurationProperties(prefix?=?"user") public?class?User{//使用value獲取一個值@Value("${user.name}")private?String?name;private?int?age;private?List<Object>?lists;private?Pig?pig; }@ImportResource:導(dǎo)入Spring的配置文件,讓配置文件里面的內(nèi)容生效
Spring Boot里面沒有Spring的配置文件,我們自己編寫的配置文件,也不能自動識別;
想讓Spring的配置文件生效,加載進(jìn)來;@ImportResource標(biāo)注在一個配置類上
由于springboot推薦使用全注解的方式,所以我們可以使用全注解的方式來改造以前的bean 的配置方式
spring配置文件:
<?xml?version="1.0"?encoding="UTF‐8"?> <beans?xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema‐instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring‐beans.xsd"><bean?id="helloService"?class="com.sihai.springboot.service.HelloService"></bean> </beans>springboot全注解方式:
1、配置類@Configuration對應(yīng)Spring配置文件
2、使用@Bean給容器中添加組件
/** *?@Configuration:指明當(dāng)前類是一個配置類;就是來替代之前的Spring配置文件 * *?在配置文件中用<bean><bean/>標(biāo)簽添加組件 * */ @Configuration public?class?MyAppConfig?{//將方法的返回值添加到容器中;容器中這個組件默認(rèn)的id就是方法名@Beanpublic?HelloService?helloService(){System.out.println("配置類@Bean給容器中添加組件了...");return?new?HelloService();} }四、profile講解
1、多Profile文件
我們在主配置文件編寫的時候,文件名可以是 application-{profile}.properties/yml
默認(rèn)使用application.properties的配置。
2、yml支持多文檔塊方式
server:port:?8080 spring:profiles:active:?prod ‐‐‐ server:port:?8083 spring:profiles:?dev ‐‐‐ server:port:?8084 spring:profiles:?prod?#指定屬于哪個環(huán)境3、激活指定profile
有一下幾種方式:
1、在配置文件中指定
spring.profiles.active=dev2、命令行:
java?-jar?spring-boot-02-config-0.0.1-SNAPSHOT.jar?--spring.profiles.active=dev可以直接在測試的時候,配置傳入命令行參數(shù)
3、虛擬機(jī)參數(shù);
-Dspring.profiles.active=dev推薦閱讀
1.?java實現(xiàn)圖片文字識別
2.?springmvc入門
3.?servlet就是這么簡單
4.?重溫javaweb過濾器filter
附上熱門QQ群,存放資源和歷史資料,2000容量(低門檻付費(fèi)群),長按二維碼入群
總結(jié)
以上是生活随笔為你收集整理的近两年火热的微服务springboot不同配置文件详细讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java基于百度API的图片文字识别(支
- 下一篇: java大公司后端多线程面试题最强分享