SpringCloud微服務實戰——第二章Springboot
Spring Boot項目工程
src/main/java:主程序入口HelloApplication,可以通過直接運行該類來啟動Spring Boot應用。
src/main/resources:配置目錄,該目錄用來存放應用的一些配置,比如應用名,服務端口,數據庫鏈接等。
由於引入了web模塊,由此產生static目錄與template目錄,static用來存放靜態資源,如:圖片、css、js。template用來存放Web頁面的模板文件。
由於演示為RESTful API,所以這兩個目錄暫時不會用到。
src/test/:單元測試目錄,自動生成的Test可以直接運行Spring Boot應用的測試。可以通過它測試RESTful API。
註:在pom中,Spring Boot的項目默認打成jar包,因為默認的Web模塊依賴會包含嵌入式的Tomcat,這樣應用jar自身就提供了Web服務的能力。
實現RESTful API
啟動該應用後就可以看到預期返回。
啟動Spring Boot項目
1)直接運行main函數啟動。
2)通過maven插件執行mvn spring-boot:run命令。
3)在服務器上部署時,先將應用打成jar包,在通過java -jar xxx.jar來啟動
編寫單元測試
@RunWith註解 使測試能夠在Spring環境中運行。
@SpringBootTest,默認指向啟動類。
MockMVC對象:用於模擬向Controller接口發起請求,perform函數執行請求,accept函數用於執行接受的數據類型,andExcept用於判斷接口返回的期望值。
配置詳解
配置文件:Spring Boot配置文件的默認地址:src/main/resources/application.properties。
可以在配置文件中定義:容器端口號、數據庫連接信息、日誌級別。
端口號:server.port=8080
應用名:spring.application.name=hello 註:該名稱會被SpringCloud註冊為服務名。
我們還可以在配置文件中使用自定義參數:
book.name=zhaiyongchao
book.price=10
然後在應用中使用@Value將值註入自定義參數
參數引用
在application.properties中也可以使用${book.name},實現對參數的引用。
隨機數
使用${random}可以實現隨機數
命令行參數
可以使用命令行啟動應用時,修改屬性:
java -jar xxx.jar --server.port=8888
在使用命令行啟動Spring Boot應用時,連續兩個減號--是對application.properties的屬性進行賦值。
多環境配置
application-{profiles}.properties格式來對應不同的環境標識:
application-dev.properties:開發環境
application-test.properties:測試環境
application-prod.properties:生產環境。
需要在application.properties中使用spring.profiles.action屬性來設置。
多環境配置使用思路:
1)在application.properties中配置通用內容,並設置spring.profiles.active=dev,以為默認開發環境
2)在application-{profile}.properties中配置各個環境不同的內容。
3)通過命令行方式去激活不同環境的配置。
加載順序
1)在命令行中傳入的參數
2)SPRING_APPLICATION_JSON中的屬性。SRPING_APPLICATION_JSON是以JSON格式配置在系統環境變量中的內容。
3)java:comp/env中的JNDI屬性
4)java的系統屬性,可以通過System.getProperties()獲得內容。
5)操作系統的環境變量
6)通過random.*配置的隨機屬性
7)位於當前應用jar包之外,針對不同{profile}環境的配置文件內容。
8)位於當前應用jar包之內,針對不同{profile}環境的配置文件內容。
9)位於當前應用jar包之外的application.properties。
10)位於當前應用jar包之內的application.properties。
11)在@configuration註解修改的類中,通過@PropertySource註解定義的屬性。
12)應用默認屬性,使用SpringApplication.setDefualtProperties定義的內容。
優先級是由高到低,數字越小優先級越高。
其中第7、9都是從jar之外讀取配置文件,因此指定外部配置文件的加載位置來取代jar包之內的配置內容。
SpringCloud微服務實戰——第二章Springboot