日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

springboot默認加載配置

SpringBoot使用兩種全局的配置文件,全局配置文件可以對一些默認配置進行修改。

  • Application.properties
  • application.yml

這兩個配置文件使我們springboot啟動的時候回默認加載的配置文件。

配置文件放在src/main/resources目錄或者類路徑/config下,這個配置文件的路徑是有優先級的,至于優先級后面再說。

首先這兩個文件中properties這個文件不需要多說使我們經常使用的資源文件,可是這個Yml是什么呢?后面再說

配置信息

SpringBoot不需要添加復雜的web.xml或者spring.xml等配置文件,spring只有一個配置文件,也非必須的。

默認的配置文件是application.properties。

#修改端口號
server.port=8888
#定義項目的訪問目錄
server.context-path=/springboot

我們使用IDEA需要注意,圖就不截圖太麻煩了:

如果properties文件中出現亂碼,找到setting中,在file encoding中勾選Transparent native-to-asci conversion。

YAML文件

除了默認的properties文件,SpringBoot還提供另外一種配置文件yml,這種文件提供一種更加簡潔的方式編寫配置信息。

yml是YAML(YAML Ain‘t Markup Language)語言的文件,是一種標記語言,以數據為中心,比json、xml等更適合做配置文件,有想法的可以去網上搜搜資料學習下。

參考語法規范:

官方參考: http://www.yaml.org

yml學習參考:https://www.yiibai.com/yaml/yaml_syntax_primitives.html

YAML基本語法:

  • 以鍵值對的方式表示屬性。(空格必須有)。
  • 使用縮進表示層級關系
  • 縮進時不允許使用Tab鍵,只允許使用空格。
  • 縮進的空格數目不重要,只要相同層級的元素左側對齊即可。
  • 屬性和值是大小寫敏感的。

例子:

server:
 port: 8081
 servlet:
 context-path: springboot

注意:【:后必須跟一個空格】,兩種方式推薦使用yml方式配置項目。

YAML語法

YAML支持的三種數據結構。

  • 字面量:普通的值。(數字,字符串,布爾)
  • 對象:鍵值對的集合。(Map)
  • 數組:一組按次序排列的值。(List,Set)

字面量

YAML中字面量屬于普通的值。以key: value來表示,value前必須帶一個空格。

字面量,字符串默認不需要單雙引號。

雙引號:會轉義字符,特殊字符會被轉義。(name: "SimpleWu lisi" //輸出:SimpleWu換行 lisi)

單引號:不會轉義字符,特殊字符不會被轉義。(name: 'SimpleWu lisi' //輸出:SimpleWu lisi)

server:
 port: 8081

對象、Map

在YAML中,對象和Map都是以鍵值對的方式表示。在下一行來編寫屬性和值得關系,注意縮進。

users:
 firstName: SimpleWu
 email: lovelyWu98k@gmail.com

對象還有另一種寫法,看到這種寫法是不是想到了JSON?

users: {
 firstName: zhangsan,
 email: lovelyWu98k@gmail.com
}

數組

用-值得方式來表示數組中的一個元素。

users:
 - SimpleWu
 - lovelyWu98k@gmail.com
 - addressisnot

另外一種寫法,還是像JSON

users: [SimpleWu,lovelyWu98k@gmail.com,addressisnot]

 

將配置映射到實體類

springboot支持我們直接將properties或者yml中的屬性映射到某個實體類,看例子。

MySQL:
 url: jdbc:mysql:///springboot
 port: 3306
 user: root
 pass: root

假如在資源中我們現在有個mysql的鏈接信息,我們如何將它映射到實體類中去呢?

有兩種方式:

  • @ConfigurationProperties指定從配置文件中讀取屬性,prefix指定對應yaml文件中的名稱。
  • @Value獲取配置的屬性值

 

@ConfigurationProperties

使用IDEA當我們添加了@ConfigurationProperties注解后,在頁面上回出現一個錯誤提示,我們需要加入依賴。

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-configuration-processor</artifactId>
 <optional>true</optional>
</dependency>

編寫JAVA類MySQLInfo.java

//java類
@ConfigurationProperties(prefix = "mysql")
@Component
public class MySQLInfo {
 private String url;
 private Integer port;
 private String user;
 private String pass;
 //省略getset
}

我們只需要指定prefix即可,他就會加載我們yml配置前置為mysql的屬性。

@Value

如果我們使用這個注解來獲取屬性使用方式是:

//java類
@Component
public class MySQLInfo {
 @Value("${mysql.url}")
 private String url;
 @Value("${mysql.port}")
 private Integer port;
 @Value("${mysql.user}")
 private String user;
 @Value("${mysql.pass}")
 private String pass;
 //省略getset
}

注意如果需要使用表達式只有@Value才可以,@Value("#{10*2}) 結果為:20

兩種方式的區別:

超全、超詳的Spring Boot配置講解筆記

 

兩種方式的適用場合:

當只需要為某個值提供注入時,推薦使用@Value方式。

當需要對整個對象的整體進行賦值時,使用@ConfigurationProperties。

加載外部配置文件

如果我們將所有的配置信息都寫在application.yml文件中,則到時候yml文件會變得非常龐大,不太方便我們進行維護。

我們可以對配置中的內容進行拆分,拆分到多個文件中。這樣就提高了配置的可維護性。

引入外部配置文件:

  1. @PropertySource(value={"classpath:student.properties"})
  2. @ImportResource(locations={"classpath:spring.xml"}
  3. @Configuration和@Bean方式。(SpringBoot推薦方式)

第一種方式:@ProperSource方式:需要注入的類的前面使用該注解。

第二種方式:@ImportResource方式首先添加一個spring的配置文件,在里面添加需要映射的類。在啟動的SpringBootApplication前面使用該注解

第三種方式:@Configuration和@Bean方式添加一個自定義配置類。

//第三種方式
@Configuration
public class MyConfig {
 //將方法的返回值添加到容器中;容器中這個組件默認的id就是方法名
 @Bean
 public MySQLInfo mySQLInfo(){
 System.out.println("配置類@Bean給容器中添加組件了...");
 return new MySQLInfo();
 }
}

切換多個外部配置文件

真實環境中,有時候需要配置多個配置文件,可以使用spring.profile.active來進行切換。

比如現在我們有三個配置文件:

  • application.yml
  • application-dev.yml
  • application-prod.yml

我們在application.yml中通過spring.profile.active = dev(prod)來選擇需要加裝的配置文件。

或者我們可以通過maven將項目打成jar包通過命令行使用以下命令來指定環境

java –jar springboot02-0.0.1-SHAPSHOT.jar –spring.profiles.active=dev</span class="hljs-attribute">

 

文檔塊

在yml文檔中,可以適用---來將一個文檔拆分為多個文檔塊。可以在不同文檔塊中分別定義不同的環境。

然后通過spring.profiles=xxx來對文檔塊進行命名。最后通過第一個文檔塊制定spring.profiles.active=xxx來指定到底激活哪個文檔塊。

#application.yml
spring:
 profiles:
 active: dev #指定激活dev文檔
---
server:
 port: 8081
spring:
 profiles: dev #給文檔命名為dev

配置文件加載位置和順序

springboot啟動會掃描一下位置的配置文件作為springboot的默認配置文件。

  1. 項目路徑下的config文件夾
  2. 項目路徑下
  3. classpath路徑下config文件夾
  4. classpath路徑下

以上是按照優先級從高到低的順序,所有位置的文件都會被加載,如果沖突的情況,高優先級配置內容會覆蓋低優先級配置內容。如果不沖突,形成互補配置。

我們也可以通過配置spring.config.location來改變默認配置。使用命令行方式加載,否則優先級不夠。

java –jar xxxx.jar –spring.config.location=配置文件路徑

 

外部配置加載順序

pringBoot也可以從以下位置加載配置;優先級從高到低,高優先級的配置覆蓋低優先級的配置,所有配置形成互補配置。

  1. 命令行參數
  2. 來自java:comp/env的JNDI屬性
  3. Java系統屬性(System.getProperties())
  4. 操作系統環境變量
  5. RandomValuePropertySource配置的random.*屬性值
  6. jar包外部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
  7. jar包內部的application-{profile}.properties或application.yml(帶spring.profile)配置文件
  8. jar包外部的application.properties或application.yml(不帶spring.profile)配置文件
  9. jar包內部的application.properties或application.yml(不帶spring.profile)配置文件
  10. @Configuration注解類上的@PropertySource
  11. 通過SpringApplication.setDefaultProperties指定的默認屬性

官方參考文檔:https://docs.spring.io/spring-boot/docs/1.5.9.RELEASE/reference/htmlsingle/#boot-features-external-config

springboot自動配置

SpringBoot啟動會加載大量的自動配置類

我們看我們需要的功能有沒有SpringBoot默認寫好的自動配置類;

我們再來看這個自動配置類中到底配置了哪些組件;(只要我們要用的組件有,我們就不需要再來配置了)

給容器中自動配置類添加組件的時候,會從properties類中獲取某些屬性。我們就可以在配置文件中指定這些屬性的值;

自動配置原理:SpringBoot啟動的時候,加載主配置類,開啟了自動配置功能@EnableAutoConfiguration。

利用EnableAutoConfigurationImportSelector給容器中導入一些組件。

導入的文件在都配置在文件META‐INF/spring.factories中的EnableAutoConfiguration屬性來獲取的。每一個這樣的 xxxAutoConfiguration類都是容器中的一個組件,都加入到容器中;用他們來做自動配置。

每一個自動配置類進行自動配置功能;

根據當前不同的條件判斷,決定這個配置類是否生效?

這些組件的屬性是從對應的properties類中獲取的,這些類里面的每一個屬性又是和配置文件綁定的;

所有在配置文件中能配置的屬性都是在xxxxProperties類中封裝者‘;配置文件能配置什么就可以參照某個功能對應的這個屬性類

分享到:
標簽:Spring Boot
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定