spring boot 配置文件 yml(yaml) properties


yml/yaml:  server:

        port:  8080

properties::

server.port=8080

配置文件可以修改spring boot 項目的默認配置

yml 的屬性和值都是大小寫敏感的

---值的寫法

 1 字面量:普通的值(數字,字符串,布爾)

    k:v : 字面直接來寫:

  字符串默認不用加上單引號或者雙引號

 

 

 

 

 

 

 

值為數組的寫法:

 

 

 

使用注解 @ConfigurationProperties  告訴SpringBoot 將本類中的所有屬性和配置文件中相關的配置進行綁定

 

 

 

 

 

 

 

解決:導入依賴:

 

 

 

將這個類(組件)加入到容器中,使用@Component 

@ConfigurationProperties  的功能是由容器提供的,所以必須加上@Component

 

 

 

 

 

 

 

 

 @ConfigurationProperties是獲取配置文件的值,prefix是獲取前綴;@Component是將類加入到容器中

 

 

 

注意:yml中 last-name 等價於 lastName  

properties 中進行配置:

 

person.last-name=張三

person.age=18

person.birth=2017/12/15

person.boss=false

#idea properties默認使用的是 utf-8的編碼
settings---Encoding 有下面將properties 文件運行時候轉換成 ascii勾選上

@ConfigurationProperties 和@Value的區別

以前的時候需要借助bean文件進行配置,為哪個組件(類)創建bean
<bean class="Person">
  <property name="lastName" value="?"></property>
</bean> Person是組件(類的名稱)
其中name=“lastName” 是屬性 value=""是屬性的值

bean標簽跟@ConfigurationProperties一樣的作用都是把Person這個組件(類)加入到容器中
其中value支持的值的寫法 :字面量(字符串,數字,Boolean值等類型);

value="字面量/${key}從環境變量、配置文件中獲取值/#{SpEL 也就是spring boot的表達式}"

@Value跟之前的bean配置文件是一樣的作用,用法也是一樣的,如下

@Value("${}/#{1*2}/字面量")

@ConfigurationProperties @Value 以及 bean配置文件的作用都是一樣的


@ConfigurationProperties  @Value的區別:
語法松散綁定:(last-name lastName)@Value不支持

數據校驗:@Validated 表示類中的寫入配置文件的屬性需要校驗;;Configuration支持校驗,@Value不支持校驗

@Email (表示屬性lastEmail 必須是郵箱格式)
private String lastEmail

 

 

 

 

 配置文件yml或者properties 都能獲取值

復雜類型封裝:向對象,map等類型 需要使用@ConfigurationProperties ,@Value不支持

如果批量獲取的話使用@ConfigurationProperties


數據校驗的代碼:

 

 

@ConfigurationProperties  默認從全局配置文件中獲取值,

 多個配置文件的情況; 我們需要使用 @PropertySource()指定配置文件的加載路徑

 @PropertySource(value{"classpath:person.propeities"}) 在需要在配置文件中讀取屬性值的類前面,指定配置文件

 

 

 

 

 

@ImportResource: 導入spring boot的配置文件。

我們自己編寫的配置文件(可以編寫beans.xml等bean配置文件)生效,需要使用@ImportResource

在啟動類上導入@ImportResource(location  = {"classpath:beans.xml"}) beans.xml指的是要加載的配置文件

配置文件: 
這里id默認用的是 類名

測試文件:

@Autowired 

ApplicationContext ioc;  意思是將這個容器注入到測試單元中,

判斷容器中是不是有這個配置文件,我們直接把這給ioc容器注入到測試單元中,

 

 

 

 

SpringBoot 推薦的給容器添加組件的方式是:推薦使用全注解的方式(以前寫bean標簽的bean配置文件):

編寫一個配置文件夾,專門放置配置文件

MyAppConfig.java

 

 測試文件:

@Autowired 

ApplicationContext ioc;  意思是將這個容器注入到測試單元中,

判斷容器中是不是有這個配置文件,我們直接把這給ioc容器注入到測試單元中,

配置文件的占位符

 

 Profile:

根據不同環境提供各不同配置的功能的支持,可以通過激活、指定參數等方式快速切換環境

1 多profile文件形式

再編寫配置文件的時候,可以加上properties的標識  eg;application.peoperties  application-dev.properties    application-prod.properties 

默認使用的application.properties 的配置

激活某個環境的配置文件

1 在application.properties的配置文件中 寫下如下配置,那么application-dev.properties 的環境的配置就被激活了

spring.profiles.active=dev 

2 命令行方式:--spring.profiles.active=dev

yml的配置文件

application.yml的配置文件可以在一個文件中配置多個環境

 

 1 配置命令參數傳入

在測試的時候可以不用打包,我們選擇這種方式,傳入參數

 

 2 可以選擇打包,打包完成之后在 target下面有我們打的jar包 包的名稱是項目名稱-0.0.1-SNAPSHOT.jar  

cmd下面:

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

 

 

3 虛擬機參數

-Dspring.profiles.active=dev

 

配置文件的加載位置:

 

 eg:當前項目叫springTest

1 當前文件下的config文件夾下的配置文件    springTest/config/application.properties

2 當前文件下的根目錄     springTest/application.properties

3 類路徑下的config文件夾下的配置文件內  springTest/java/main/Resource/config/application.properties

4 類路徑(Resources)下的配置文件 springTest/java/main/Resource/application.properties

優先級1-2-3-4越來越低   只有高優先級的配置才會生效

互補配置;沒有配置的用有配置的文件

還可以通過spring.config.location改變配置文件的配置的位置

eg:在D盤下新建一個配置文件:然后在我們當前的配置文件中寫入配置:

spring.config.location=D:/applicaiotn.properties

項目打包好了,我們可以使用命令行參數的形式。啟動項目的時候來指定配置啥文件的新位置指定配置文件和默認加載的這些配置文件共同起作用

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM