<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
組態檔是非常重要的,整個專案中所有的重要資料都是在組態檔中進行設定的例如:
如果沒有組態檔的話,這些資訊就無法進行設定了,資料庫無法連線,紀錄檔無法檢視等這些問題都是對於Spring Boot專案非常關鍵的,因此組態檔是特別重要的!
組態檔的分類一般是:
而Spring Boot的組態檔主要有兩種格式:
就是這樣的兩種格式,而且這裡也一定要這麼寫,不然也是會報錯的(約定大於設定),在這兩個裡面都是可以進行相關組態檔的設定的,兩種格式只是不同時間的產物罷了,另外兩種格式的寫法也是不同的,這個下面會有相關的介紹,而且這兩種格式也是可以並存的,如果兩個都設定了,這裡的設定會採用properties裡面的設定,而忽略yml裡面的設定,因此不建議同時使用兩種格式再同一個專案中!
properties組態檔是更早期的組態檔格式,也是Spring Boot專案預設的組態檔,下面就具體介紹一下properties組態檔:
在properties裡面是以鍵值對為主的(key=value),類似於
這樣的格式(中間不要寫空格,也不要寫多餘的空格)
如果是自定義的組態檔的話,也是key=value的形式,而這是需要自己寫的,如果要讀取這個檔案也只能使用自己定義的key值來得到value值!
同樣也是使用註解就可以解決這個問題,這裡使用@Value註解以及${}的格式就可以進行讀取了:
@Controller public class Test { @Value("${server.port}") //讀取設定項 private String port; @ResponseBody //返回一個非靜態頁面的資料 @RequestMapping("/func") //設定路由地址 public String func(){ return "port: " + port; } }
然後通過頁面搜尋http://localhost:8080/func就看有觀察到讀取到的埠號了:
而使用@Value是隻能讀取一個組態檔的話,如果想讀取多個的話,需要多寫幾個@Value標籤就可以了
在properties裡面是採用key=value的形式,而如果是同一key下的value,就需要把此key值重複來寫,這就顯得非常冗餘了
而想要解決這個問題就需要使用yml組態檔了
yml是另一種格式的組態檔,yml 是⼀個可讀性⾼,易於理解,⽤來表達資料序列化的格式,yml的語法和高階語言非常類似,而yml最大的優勢是可以跨語言,像python,golang都可以使用yml作為設定⽂件。下面具體介紹一下yml組態檔:
在yml裡面的基本語法是:key: value,注意key和value之間需要英文冒號加空格,其中的空格也是不可省略的,類似
這樣的語法再寫上面的連線資料庫設定的話,就方便很多了:
補充:yml中關於單、雙引號的問題:yml中如果使用了雙引號就會按照(原)語意執行,如果不加,或者加了單引號,那麼預設就會將字串中的特殊字元進行跳脫,比如n -> n(跳脫)處理。
yml組態檔的讀取方式也是和properties一樣的,都是使用@Value註解加${}的格式,這裡就不演示了,下面來看一下yml不一樣的地方!
在yml裡面還是可以設定物件的:
另外也可以使用行內寫法:
而想要讀取到這個物件的話就不能再使用@Value註解了,這裡需要藉助@ConfigurationProperties來讀取:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; @Data @ConfigurationProperties(prefix = "student") //讀取組態檔的物件 @Component public class Student { private int id; private String name; private int age; }
然後讀取物件,就可以直接進行注入了:
@Controller public class Test { @Autowired private Student student; @ResponseBody @RequestMapping("/getstudent") public String getStudent(){ return "student: " + student; } }
然後通過瀏覽器搜尋http://localhost:8080/getstudent就可以得到物件內容了:
在yml裡面也是可以設定集合的:
同樣行內寫法也是可以的:
而要獲取到集合的話,和獲取物件是差不多的,也是通過@ConfigurationProperties來獲取:
import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; @Data @ConfigurationProperties(prefix = "dbtypes") @Component public class ListConfig { private List<String> name; }
讀取集合:
@Controller public class Test { @Autowired private ListConfig listConfig; @ResponseBody @RequestMapping("/getlist") public String getList(){ return "name:" + listConfig.getName(); } }
然後通過瀏覽器搜尋http://localhost:8080/getlist就可以得到物件內容了:
到此這篇關於Spring Boot詳解組態檔有哪些作用與細則的文章就介紹到這了,更多相關Spring Boot組態檔內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45