目錄
全局配置文件
application.properties配置文件
application.yaml配置文件
?value值為普通數(shù)據(jù)類型(例如數(shù)字、字符串、布爾等)
?value值為數(shù)組和單列集合
?value值為Map集合
?value值為對(duì)象或嵌套對(duì)象
@Value
自定義配置
使用@PropertySource加載配置文件
隨機(jī)數(shù)設(shè)置及參數(shù)間引用
隨機(jī)值設(shè)置
參數(shù)間引用
全局配置文件
全局配置文件是能夠?qū)σ恍┠J(rèn)配置值進(jìn)行修改。Spring Boot使用一個(gè)application.properties或者application.yml的文件作為全局配置文件,該文件存放在src/main/resource目錄或者類路徑的/config,一般會(huì)選擇resource目錄。
? ?application.properties配置文件
server.port=8080
spring.config.name=peach
spring.application.name=peach-properties
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=xxxx
spring.redis.database=0
演示將application.properties配置文件中的自定義配置屬性注入到PropertiesConfig實(shí)體類的對(duì)應(yīng)屬性中
package com.peach.demo.vo;
import lombok.Data;
/**
* @program: YLT
* @description: 人類
* @author: Mr.peach
* @create: 2023-04-02 23:46
**/
@Data
public class People {
private Integer id;
private String name;
private int age;
}
package com.peach.demo.config;
import com.peach.demo.vo.People;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.List;
import java.util.Map;
/**
* @program: YLT
* @description: 配置類
* @author: Mr.peach
* @create: 2023-04-02 23:48
**/
@ConfigurationProperties(prefix = "peach-pro")
@Component
@Data
public class PropertiesConfig {
private Integer id;
private String userName;
private List liek;
private String[] family;
private Map map;
private People people;
}
- 在resources目錄下創(chuàng)建的application.properties文件配置如下:
? ??
?編寫application.properties配置文件時(shí),由于要配置的PropertiesConfig對(duì)象屬性是我們自定義的,Spring Boot無(wú)法自動(dòng)識(shí)別,所以不會(huì)有任何書寫提示。在實(shí)際開(kāi)發(fā)中,為了出現(xiàn)代碼提示的效果來(lái)方便配置,在使用@ConfigurationProperties注解進(jìn)行配置文件屬性值注入時(shí),可以在pom.xml文件中添加一個(gè)SpringBoot提供的配置處理器依賴:
<!--自定義配置提示-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
重新運(yùn)行項(xiàng)目啟動(dòng)類或者重新構(gòu)建可生效
?測(cè)試配置效果
application.yaml配置文件
????????YAML文件格式是Spring Boot支持的一種JSON超集文件格式,相較于傳統(tǒng)的Properties配置文件,YAML文件以數(shù)據(jù)為核心,是一種更為直觀且容易被電腦識(shí)別的數(shù)據(jù)序列化格式。application.yaml配置文件的工作原理和application.properties是一樣的,只不過(guò)yaml格式配置文件看起來(lái)更簡(jiǎn)潔一些。我本人開(kāi)發(fā)過(guò)程中一般用這種格式,更簡(jiǎn)潔更有層次感。?YAML文件的擴(kuò)展名可以使用.yml或者.yaml。?application.yml文件使用“key:(空格)value"格式配置屬性,使用縮進(jìn)控制層級(jí)關(guān)系。
value值為普通數(shù)據(jù)類型(例如數(shù)字、字符串、布爾等)
?value值為數(shù)組和單列集合
????????當(dāng)YAML配置文件中配置的屬性值為數(shù)組或單列集合類型時(shí),主要有兩種書寫方式︰縮進(jìn)式寫法和行內(nèi)式寫法??s進(jìn)式有兩種寫法,行內(nèi)式寫法如下:
?value值為Map集合
?value值為對(duì)象或嵌套對(duì)象
注意:application.properties和application.yml如果配置相同屬性,application.properties會(huì)覆蓋application.yml的配置。?
@Value
支持基本屬性的注入,對(duì)于包含Map集合、對(duì)象以及YAML文件格式的行內(nèi)式寫法的配置文件的屬性注入都不支持,如果賦值會(huì)出現(xiàn)錯(cuò)誤
自定義配置
可以說(shuō),幾乎所有的配置都可以寫在application.peroperties文件中,Spring Boot會(huì)自動(dòng)加載全局配置文件從而免除我們手動(dòng)加載的煩惱。但是,如果我們自定義配置文件,Spring Boot是無(wú)法識(shí)別這些配置文件的,此時(shí)就需要我們手動(dòng)加載。
使用@PropertySource加載配置文件
對(duì)于這種加載自定義配置文件的需求,可以使用@PropertySource
注解結(jié)合@Configuration
注解配置類的方式來(lái)實(shí)現(xiàn)。@PropertySource注解用于指定自定義配置文件的具體位置和名稱。同時(shí),為了保證Spring Boot能夠掃描該注解,還需要類上添加@Configuration注解將實(shí)體類作為自定義配置類。當(dāng)然,如果需要將自定義配置文件中的屬性值注入到對(duì)應(yīng)類的屬性中,可以使用@ConfigurationProperties
或者@Value
注解進(jìn)行屬性值注入
- 打開(kāi)Spring Boot項(xiàng)目的resources目錄,在項(xiàng)目的類路徑下新建一個(gè)peach.properties自定義配置文件,在該配置文件中編寫需要設(shè)置的配置屬性。
- 新創(chuàng)建一個(gè)配置類CustomPropertiesConfig,提供zjq.properties自定義配置文件中對(duì)應(yīng)的屬性,并根據(jù)
@PropertySource
注解的使用進(jìn)行相關(guān)配置
隨機(jī)數(shù)設(shè)置及參數(shù)間引用
在Spring Boot配置文件中設(shè)置屬性時(shí),除了可以像前面示例中顯示的配置屬性值外,還可以使用隨機(jī)值和參數(shù)間引用對(duì)屬性值進(jìn)行設(shè)置。下面,針對(duì)配置文件中這兩種屬性值的設(shè)置方式進(jìn)行講解。
隨機(jī)值設(shè)置
在Spring Boot配置文件中,隨機(jī)值設(shè)置使用到了Spring Boot內(nèi)嵌的RandomValuePropertySource
類,對(duì)一些隱秘屬性值或者測(cè)試用例屬性值進(jìn)行隨機(jī)值注入。 隨機(jī)值設(shè)置的語(yǔ)法格式為${random.xx},xx表示需要指定生成的隨機(jī)數(shù)類型和范圍,它可以生成隨機(jī)的整數(shù)、uuid或字符串,示例代碼如下:
# ${random.value} # 配置隨機(jī)值
# ${random.int} #配置隨機(jī)整數(shù)
# ${random.long} # 配置隨機(jī)long類型數(shù)
# ${random.uuid} # 配置隨機(jī)uuid類型數(shù)
# ${random.int(10)} #配置小于10的隨機(jī)整數(shù)
#${random.int[1024,65536]} # 配置范圍在[ 1024,65536]之間的隨機(jī)整
參數(shù)間引用
? 在Spring Boot配置文件中,配置文件的屬性值還可以進(jìn)行參數(shù)間的引用,也就是在后一個(gè)配置的屬性值中直接引用先前已經(jīng)定義過(guò)的屬性,這樣可以直接解析其中的屬性值了。 使用參數(shù)間引用的好處就是,在多個(gè)具有相互關(guān)聯(lián)的配置屬性中,只需要對(duì)其中一處屬性預(yù)先配置,其他地方都可以引用,省去了后續(xù)多處修改的麻煩 參數(shù)間引用的語(yǔ)法格式為${xx},xx表示先前在配置文件中已經(jīng)配置過(guò)的屬性名文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-628813.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-628813.html
到了這里,關(guān)于SpringBoot中配置文件詳解(yml、properties全局配置和自定義配置),獲取配置方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!