1. 程式人生 > >SpringCloud微服務實戰——第二章Springboot

SpringCloud微服務實戰——第二章Springboot

java with 當前 tom 參數 請求 bubuko zha 格式

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