日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全局配置文件操作

發(fā)布時(shí)間:2024/4/13 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全局配置文件操作 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
我們已經(jīng)去構(gòu)建了SpringBoot項(xiàng)目,在這個(gè)項(xiàng)目當(dāng)中,與全局配置文件的一個(gè)講解,雖然在之前,講解了SpringBoot的全局配置文件,那么咱們還有一些內(nèi)容呢,沒有講到,我們再做一個(gè)補(bǔ)充,我們看全局配置文件中的第一個(gè)內(nèi)容,修改端口號,修改內(nèi)嵌容器的端口號,回到我們的項(xiàng)目當(dāng)中,其實(shí)我們知道,在我們的SpringBoot當(dāng)中,對于內(nèi)嵌的Tomcat,默認(rèn)的監(jiān)聽端口號是8080,在這里我們可以把我們的項(xiàng)目啟動一下,看一下控制臺輸出的監(jiān)聽的端口號端口,端口號是多少,我們項(xiàng)目啟動完畢以后呢,他默認(rèn)的監(jiān)聽的端口號是8080,比如我現(xiàn)在想把端口號改成8888,該怎么去做呢,回到我們的全局配置文件當(dāng)中,在這里我們只需要添加一個(gè)鍵值對就可以了server.port=8888那這個(gè)我們要注意的就是,key必須要交server.port,因?yàn)閟pringboot在解析的時(shí)候,他要去解析這個(gè)配置文件,在全局配置文件當(dāng)中,他發(fā)現(xiàn)有server.port了,他知道你要修改服務(wù)的端口號,所以這是不能隨便取的一個(gè)key,就叫server.port,下面我們再啟動一下我們的項(xiàng)目,我們看一下控制臺輸出,現(xiàn)在是不是變成了8888了Tomcat started on port(s): 8888 (http)那么也就是說我們修改端口也是成功的,這個(gè)也就是SpringBoot當(dāng)中,修改端口號的一個(gè)方式,接下來我們再看一下,我們可以在SpringBoot的全局配置文件當(dāng)中,除了修改端口號以外,還可以做什么呢,比如完成自定義屬性的=配置,那么其實(shí)自定義屬性配置,已經(jīng)講過了,這個(gè)叫法大家聽著挺陌生的,這個(gè)名這么叫也沒有問題,什么意思呢,比如我現(xiàn)在要在配置文件里,key跟value,這個(gè)value呢,他將作為一個(gè)配置項(xiàng),未來會注入到我的代碼當(dāng)中,如果我想有這樣的一個(gè)設(shè)計(jì)的話,有這樣的一個(gè)需求的話,我該怎么去實(shí)現(xiàn)呢,很簡單,比如我這里有一個(gè)msg,然后后面給一個(gè)value,就叫Hello World,現(xiàn)在我就要把msg所對應(yīng)的value通過一定的方式,注入到我的代碼當(dāng)中,我們來看一下這怎么做,首先我添加一個(gè)key和value,然后我們?nèi)?chuàng)建一個(gè)Controller,然后這個(gè)名字叫HelloWorldController,然后在這個(gè)Controller當(dāng)中,我們先去用一個(gè)@RestController,這個(gè)注解大家應(yīng)該知道是什么意思了,也就是以JSON格式來返回了,然后再加一個(gè)@RequestMapping,將一個(gè)URL綁定到一個(gè)方法上,我就叫hello,然后定義一個(gè)方法返回String,叫showMsg,然后這個(gè)方法寫完了,在我的這個(gè)Controller當(dāng)中呢,我有一個(gè)成員變量,String類型的,就叫msg,在這里我return這個(gè)msg,將他的信息返回,然后我要把key的valule注入到這里,用一個(gè)@Value的注解,然后寫一個(gè)類似EL表達(dá)式的語法,把我們的key填進(jìn)來,這樣就可以了@RestController public class HelloWorldController {@Value("${msg}")private String msg;@RequestMapping("/hello")public String showMsg(){return this.msg;} }我們啟動一下,看能不能得到我們想要的結(jié)果,我們觀察控制臺,監(jiān)聽的端口是8888,打開瀏覽器我們來訪問一下http://localhost:8888/hello我們可以看到,信息是可以拿到的,這種方式我們也可以稱之為自定義屬性配置,這個(gè)是配置文件里的值msg=Hello World這是在配置文件當(dāng)中,自定義屬性的方式,去獲取里面的信息,接下來我們再來看,配置變量引用,在配置文件當(dāng)中呢,去完成一個(gè)配置變量應(yīng)用,我們來看一下

比如我現(xiàn)在還有一個(gè)key,我在上邊定義,叫什么都行,我們叫hello,然后我這里也有一個(gè)值,這個(gè)值我叫China,hello=China然后我的意思是這樣的,現(xiàn)在我要將hello所對應(yīng)的value,也就是China,放到我的msg當(dāng)中,然后再把msg里面的值,注入給我的Controller的msg屬性,那怎么去做呢,我們可以這么去做,在這里我們通過一個(gè)EL表達(dá)式,類似于EL表達(dá)式的語法,其實(shí)文件里也是這么寫的,然后把我們的key放到這里,那么這個(gè)時(shí)候呢,springboot在解析配置文件的時(shí)候,根據(jù)你的key把value取出來,拼到這個(gè)位置,接下來我們來驗(yàn)證一下,看看能不能達(dá)到,我們接下來再來訪問,刷新,看到了嗎localhost:8888/hello這個(gè)值在配置文件當(dāng)中,也已經(jīng)被取出來了,并且拼到這里了,所以這種方式稱之為配置變量的引用

然后是我們的代碼,Controller里面的代碼是沒有變化的,這是在配置文件當(dāng)中,完成配置變量引用,我們再來看,在配置變量當(dāng)中其實(shí)還可以做隨機(jī)值配置,這是我們需要注意的是,我們有兩種方式來講解,隨機(jī)值,通過隨機(jī)值的配置來配置隨機(jī)值,第二個(gè)我們還可以完成隨機(jī)端口的配置,配置隨機(jī)端口,我們先來看一下,其實(shí)這兩個(gè)都是非常有用的,咱們來看一下配置隨機(jī)值,這什么意思呢,打開我們的配置文件,比如我們在這里有一個(gè)key叫num,然后這塊我想給他產(chǎn)生一個(gè)隨機(jī)數(shù),配置文件當(dāng)中給num產(chǎn)生一個(gè)隨機(jī)數(shù),那我應(yīng)該怎么去做呢,這里我們還是用一個(gè)${},里面寫什么呢,其實(shí)用了springboot當(dāng)中對于配置文件一個(gè)常量對象,叫random,然后在這個(gè)對象下,我們調(diào)用一個(gè)方法,叫int,這個(gè)時(shí)候random對象就會給我們產(chǎn)生一個(gè)int的隨機(jī)值,并且賦予了num,然后在這里呢,把num的值加到msg當(dāng)中,我們再來訪問頁面num=${random.int}請求這個(gè)Controller,看能不能拿到值,我們現(xiàn)在把項(xiàng)目重啟一下msg=Hello World ${hello} ${num}我們看到了,是可以產(chǎn)生一個(gè)整數(shù)的隨機(jī)數(shù),有的人說為什么刷新沒有變化呢,這就是我要說的一個(gè)點(diǎn),我們的配置文件,是不是只在啟動時(shí)配置一次,那么只被解析一次,表示隨機(jī)值產(chǎn)生的次數(shù)只產(chǎn)生一次,他不會隨著你請求次數(shù)的變化,而去改變隨機(jī)值的,這就是我們需要注意的,這是我們在配置文件里,產(chǎn)生隨機(jī)值需要注意的一個(gè)點(diǎn),我們把它整理到筆記當(dāng)中

其實(shí)無論是配置隨機(jī)值也好,還是配置隨機(jī)端口也好,在我們開發(fā)過程當(dāng)中呢,還是比較有用的,那我們說一下這里有什么用處,配置隨機(jī)值,在程序中,如果有一些需要運(yùn)算,如果一個(gè)運(yùn)算需要隨機(jī)值的話,那么可以使用該方式,來生成,注意只生成一次,這是我們需要注意的,我們再來看,我們需要配置隨機(jī)值的方式呢,可以去配置隨機(jī)端口,隨機(jī)端口什么意思呢,我們現(xiàn)在給定的是一個(gè)固定端口,那我們其實(shí)也可以讓他在每次啟動的時(shí)候呢,都擁有不同的端口,怎么去做呢,比較簡單,還是用random來完成server.port=${random.int[1024,9999]}不同的是什么呢,我們的端口是不是要給他限定一個(gè)范圍,你要隨機(jī)生成,他已經(jīng)超過我們操作系統(tǒng)所涵蓋的范圍了,0到65535個(gè)端口,已經(jīng)超了,那怎么辦呢,這里可以用中括號來限定他的范圍,比如我讓他的端口范圍在1024到9999之間,其實(shí)就是一個(gè)正則表達(dá)式范圍的限定,我們這么來給定以后呢,其實(shí)我們這個(gè)端口,他每次啟動的時(shí)候,都會有變化的,我們可以來測試一下,回到我們的啟動類當(dāng)中,我們?nèi)铀?觀察控制臺,現(xiàn)在端口是4642Tomcat started on port(s): 4642 (http)我們把它關(guān)掉,我們再啟動一次,再觀察,是7609Tomcat started on port(s): 7609 (http)所以說這種方式呢,是設(shè)置我們隨機(jī)端口的一種方式,配置我們的隨機(jī)端口,那么這里我們還是說一下,配置隨機(jī)端口,配置隨機(jī)端口在我們微服務(wù)開發(fā),在微服務(wù)開發(fā)當(dāng)中呢,也是比較有用的,他的用處我們一般用在哪兒呢,在SpringCloud的微服務(wù)中,我們是不需要記錄服務(wù)的IP和端口號的,那么我們也就不用去維護(hù)服務(wù)的端口號,讓他隨機(jī)生成就可以了,如果你還要去維護(hù)這個(gè)端口號呢,是非常麻煩的,因?yàn)槲覀兊奈磥淼姆?wù)是非常多的,每個(gè)服務(wù)你都的指定一個(gè)端口號,如果你要是忘記指定了,或者沒有指定端口號,那么他就會出現(xiàn)端口搶占的問題,所以你還不如給他一個(gè)隨機(jī)的端口號,那么我們又講解了一個(gè)隨機(jī)端口配置的方式,我們主要是講了配置,你像自定義屬性配置我們之前說過,然后像配置隨機(jī)值,還有配置變量引用的方式,我們沒有說過,還有端口號,其實(shí)當(dāng)時(shí)沒講的原因是什么,涉及不到,只有講微服務(wù)的時(shí)候,才會涉及到隨機(jī)端口的設(shè)置,所以在這里呢,把它做了一個(gè)補(bǔ)充,以上就是我們要講的內(nèi)容,主要是講了全局配置文件的操作

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.learn</groupId><artifactId>springboot-hello</artifactId><version>0.0.1-SNAPSHOT</version><name>springboot-hello</name><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.12.RELEASE</version></parent><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><!-- springBoot的啟動器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project> #server.port=8888 hello=China num=${random.int} #msg=Hello World ${hello} msg=Hello World ${hello} ${num} server.port=${random.int[1024,9999]} package com.learn.springboothello.controller;import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController public class HelloWorldController {@Value("${msg}")private String msg;@RequestMapping("/hello")public String showMsg(){return this.msg;} } package com.learn.springboothello;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class SpringbootHelloApplication {public static void main(String[] args) {SpringApplication.run(SpringbootHelloApplication.class, args);}}

?

總結(jié)

以上是生活随笔為你收集整理的全局配置文件操作的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。