中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

SpringBoot | 第三章:springboot配置詳解

2018-08-01    來(lái)源:importnew

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

基于springboot的約定優(yōu)于配置的原則,在多數(shù)情況下,啟動(dòng)一個(gè)應(yīng)用時(shí),基本上無(wú)需做太多的配置,應(yīng)用就能正常啟動(dòng)。但在大部分開(kāi)發(fā)環(huán)境下,添加額外配置是無(wú)所避免的,比如自定義應(yīng)用端口號(hào)(比較在機(jī)器比較少的情況下,一臺(tái)機(jī)器還是需要部署多個(gè)應(yīng)用的,當(dāng)然利用docker的話,是可避免的,這是后話了)、mq的服務(wù)地址、緩存服務(wù)的服務(wù)地址、數(shù)據(jù)庫(kù)的配置等,都或多或少的需要一些外部的配置項(xiàng)。

配置文件格式簡(jiǎn)要說(shuō)明

springboot默認(rèn)的全局配置文件名為application.properties或者application.yml(spring官方推薦使用的格式是.yml格式,目前官網(wǎng)都是實(shí)例都是使用yml格式進(jìn)行配置講解的),應(yīng)用啟動(dòng)時(shí)會(huì)自動(dòng)加載此文件,無(wú)需手動(dòng)引入。除此之外還有一個(gè)bootstrap的全局文件,它的加載順序在application配置文件之前,主要是用于在應(yīng)用程序上下文的引導(dǎo)階段,在后期講解springCloudCofnig時(shí),主要是利用此特性,進(jìn)行配置文件的動(dòng)態(tài)修改,在此不表,在通常情況下,此兩個(gè)配置文件是沒(méi)有差別的,所以一般上都只需要配置application即可。

自定義屬性值

application.properties配置文件支持自定義屬性的支持,比如

blog.address=https://blog.lqdev.cn
blog.author=oKong

然后可通過(guò)@Value("${blog.author}")的形式獲取屬性值。

@RestController
public class DemoController {

    @Value("${blog.address}")
    String address;

    @Value("${blog.author}")
    String author;

    @Value("${blog.desc}")    
    String desc;

    @RequestMapping("/")
    public String demo() {
        return desc;
    }
}

這里提醒下,在填寫一些默認(rèn)的比如,數(shù)據(jù)庫(kù)屬性時(shí),可使用alt+/的方式,IDE會(huì)自動(dòng)顯示提示,避免了手動(dòng)嵌入屬性值或者忘記屬性的尷尬。

關(guān)于自定義屬性時(shí),特別是一些公用包,會(huì)使用到屬性值時(shí),建議在創(chuàng)建additional-spring-configuration-metadata.json屬性元文件,這樣在使用上述快捷方式時(shí),會(huì)進(jìn)行提示,包括屬性名和屬性說(shuō)明,這樣也方便調(diào)用者詢問(wèn)屬性名是啥。

相關(guān)configuration-metadata說(shuō)明可查看:https://docs.spring.io/spring-boot/docs/current/reference/html/configuration-metadata.html

屬性引用

在配置文件中,各個(gè)屬性參數(shù)可進(jìn)行引用的,比如:

blog.address=https://blog.lqdev.cn
blog.author=oKong
blog.desc=${blog.author},${blog.address}

最后blog.desc的值即可:oKong,https://blog.lqdev.cn。利用此特性,并可實(shí)現(xiàn)一些特殊的功能。比如后期講解spring cloud時(shí),注冊(cè)eurka注冊(cè)中心的實(shí)例名時(shí),并會(huì)使用類似如下配置,使得實(shí)例名一眼就知道哪臺(tái)服務(wù)地址:

eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}

這里需要注意,由于springboot在讀取properties文件時(shí),使用的是PropertiesPropertySourceLoader類進(jìn)行讀取,默認(rèn)讀取的編碼是ISO 8859-1,故在默認(rèn)的配置文件中使用中文時(shí),會(huì)出現(xiàn)亂碼,此時(shí)可以將中文轉(zhuǎn)成Unicode編碼或者使用yml配置格式(默認(rèn)就支持utf-8),再不濟(jì)可以將作為配置寫入到一個(gè)自定義配置文件,利用@PropertySource注解的encoding屬性指定編碼

隨機(jī)數(shù)

Spring Boot的屬性配置文件中可以通過(guò)${random}來(lái)產(chǎn)生int值、long值或者string字符串,來(lái)支持屬性的隨機(jī)值。

# 隨機(jī)字符串
.blog.value=${random.value}
# 隨機(jī)int
.blog.number=${random.int}
# 隨機(jī)long
.blog.bignumber=${random.long}
# 10以內(nèi)的隨機(jī)數(shù)
.blog.test1=${random.int(10)}
# 1-20的隨機(jī)數(shù)
.blog.test2=${random.int[1,20]}

自定義配置文件

在多數(shù)情況下,配置信息基本上都是放入application.properties文件中,但在一些場(chǎng)景下,比如某個(gè)配置項(xiàng)比較多時(shí),為了分開(kāi)存放,也可自定義配置文件,如my.properties。由于自定義的文件,系統(tǒng)不會(huì)自動(dòng)加載,這個(gè)時(shí)候就需要手動(dòng)引入了。 利用@PropertySource注解既可以引入配置文件,需要引入多個(gè)時(shí),可使用@PropertySources設(shè)置數(shù)組,引入多個(gè)文件。

@SpringBootApplication
@PropertySource(value="classpath:my.properties",encoding="utf-8")
public class Chapter3Application {

    public static void main(String[] args) {
        SpringApplication.run(Chapter3Application.class, args);
    }
}

配置綁定對(duì)象

雖然使用@Value()方式,能方便的引入自定義的屬性值,但在多某個(gè)配置項(xiàng)屬于某一配置時(shí),希望對(duì)應(yīng)到一個(gè)實(shí)體配置類中,springboot也提供了支持。利用@ConfigurationProperties屬性,即可完成 my.properties配置文件:

config.code=code
config.name=趔趄的猿
config.hobby[0]=看電影
config.hobby[1]=旅游

實(shí)體類:

@Component
//@EnableConfigurationProperties(value= {Config.class})
@ConfigurationProperties(prefix="config")
@Data
public class Config {

    String code;

    String name;

    List<String> hobby;
}

這里可直接加入@Component使其在啟動(dòng)時(shí)被自動(dòng)掃描到,或者使用@EnableConfigurationProperties注解注冊(cè)此實(shí)體bean. 其次,在引入@ConfigurationProperties時(shí),IDE會(huì)提示你引入spring-boot-configuration-processor依賴,前面提到,在自定義屬性時(shí),創(chuàng)建additional-spring-configuration-metadata.json可進(jìn)行屬性提示,而此依賴功能類似,會(huì)編譯時(shí)自動(dòng)生成spring-configuration-metadata.json文件,此文件主要給IDE使用,用于提示使用。添加后在配置文件點(diǎn)擊屬性時(shí),會(huì)自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)綁定的實(shí)體類中

數(shù)組形式

配置了以下配置,然后利用List<String>就能獲取hobby的值了。

config.code=code
config.name=趔趄的猿
config.hobby[0]=看電影
config.hobby[1]=旅游

標(biāo)簽: 數(shù)據(jù)庫(kù)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Java 動(dòng)態(tài)代理及 RPC 框架介紹

下一篇:深入理解單例模式(下)