《SpringCloud 從入門到入土 》 第二章:微服務構建:Spring Boot

SprignBoot框架簡介

   本節主要簡單介紹一下SpringBoot:除了它是SpringCloud的基礎之外,也由於自身的各項優點,如自動配置、快速開發、輕鬆部署等,非常適合作爲微服務架構中各項具體服務的構建單元。

   SpringBoot除了解決配置問題之外,SpringBoot還通過一系列Starter POMs 的定義,讓我們整合各項功能的時候,不需要在Maven的pom.xml中維護那些錯綜複雜的依賴關係,而是通過類似模塊化的Starter模塊定義引用,使得依賴管理工作變得更爲簡單。如今容器化大行其道的時代,SpringBoot除了可以很好的融入Docker之外,其自身就支持嵌入式的Tomcat、Jetty等容器。所以,通過SpringBoot構建的項目不再需要自身安裝Tomcat,將自身應用打包成war,再部署到Tomcat這樣複雜的構建與部署工作,只需要將SprignBoot應用打包成jar包,並通過java -jar 命令直接運行就能啓動一個標準化的Web應用,非常輕便。

快速入門

我們通過Spring 官方的項目構建工具Spring Initializer生成一個SpringBoot基礎項目,並實現網頁輸出一個HelloWorld的RESTful接口。

配置文件:SpringBoot的默認配置文件位置爲 src/main/resources/application.properties. 關於SpringBoot應用的配置文件內容 都可以幾種在該文件中,根據我們引入的不同的Starter模塊,可以在這裏定義容器的端口號、數據庫連接信息、日誌級別等各種配置信息,比如,我們需要自定義WEB模塊的服務端口號,可以在application.properties中添加server.port=8888 來制定服務的端口號爲8888,也可以通過spring.application.name=hello類指定應用名(該名字在後續的SpringCloud中會被註冊爲服務名)。SpringBoot的配置文件可以只用傳統的properties文件之外,還支持在被廣泛推薦的YAML文件。

YAML (英語發音爲 /'jaemsl/,尾音類似 camel駱駝)是一個可讀性高,用來 表達資料序列的格式。 YAML參考了其他多種語言,包括 C語言、Python、Perl, 並 從 XML、電子郵件的數據格式 ( RFC 2822)中獲得靈感。 Clark Evans在 2001 年首次發表了這種語言, Ingy ddt Net與 
Oren Ben-Kiki也是這種語言的共同設計 者。目前已經有數種編程語言或腳本語言支持(或者說解析)這種語言。YAML是YAML Ain’t a Markup Language ( YAML不是一種標記語言)的縮寫。在開發這種語言時, YAML的意思其實是 : Yet Another Markup Language (仍是一種標記語
言),但爲了強調這種語言以數據作爲中心,而不是以標記語言爲重點,而用反向縮略語重新命名。 YAML的語法和其他高階語言類似,並且可以簡單地表達清單、散列表、標量等形態。它使用空白符號縮排和大量依賴外觀的特色,特別適合用來表達或編輯數據結構、各種設定文檔、文件大綱(例
如,許多電子郵件標題格式和 YAML非常接近 ) 。 儘管它比較適合表達階層式 ( hierarchical model)的數據結構,不過也有精緻的語法可以表示關聯性( relational model)的資料。由於 YAML使用空白符號和分行來分隔資料,使得它特別適合用 grep/Python/Perl /Ruby操作。其讓人最容易上
手的特色是巧妙避開各種封閉符號,如引號、各種括號等,這些符號在巢狀結構時會變得複雜而難以辨認。
                                                                                ----------維基百科

YAML採用的配置格式不像properties的配置那樣以單純的簡直對形式來表示,而是以類似大綱的縮進形式來表示,其結構更爲清晰易讀,同事配置內容的字符量也得到顯著減少。除此之外,YAML還可以在一個單個的文件中通過spring.profiles屬性來定義多個不同的環境配置。

注意:YAML目前還有一些不足,他無法通過@propertySource註解來加載配置、但是,YAML降屬性加載到內存中保存的時候是有序的,所以當配置文件中的信息需要具備順序含義,YAML的配置方式比起properties配置文件更有優勢。記住一個點,當application.properties和application.yml同時存在時,properties的優先級更高。

自定義參數:應用中可以通過@Value註解來加載自定義參數 ${},${}同樣可以在配置文件中進行參數的引用。

使用隨機數

 

 

命令行參數:java -jar xxx.jar  --server.port = 9999  ,可以世界以命令行的方式來設置server.port屬性,並將應用的端口設置爲9999,在用命令行的方式啓動Springboot應用是 ,連續的兩個減號 --就是對application.properties中的屬性進行復制的標識。

 

多環境配置:我們在開發的時候,通常一套程序會被安裝到幾個不同的環境中,比如開發、測試、生產等,都需要不同的數據庫地址、服務器端口,如果在未不同的環境打包都需要頻繁修改配置文件的話,那必須是一個非常繁瑣的事情。

 

對於多環境的配置,SpringBoot只需要提供幾個滿足  application-{profile}.properties  的格式,其中{profile}對應環境標識,如下所示:

application-dev.properties   :開發環境

application-test.properties :測試環境

application-prod.properties :生產環境

以上三個配置文件,至於那個文件會被項目加載,需要早application.pro[perties 文件中通過spring.profiles.active屬性來設置,其值對應配置文件名的 profile 值。如果spring.profiles.active = test ,那麼就會加載application-test.properties配置文件的內容。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章