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