第二章 微服務構建:Spring Boot

  此處介紹Spring Boot的目的除了它是Spring Cloud的基礎外,也因爲其自身的各項優勢,如自動化配置、快速開發、輕鬆部署等,很是適合用做微服務架構中各項具體微服務的開發框架。
本章內容:
  • 如何構建Spring Boot項目
  • 如何實現RESTful API接口
  • 如何實現多環境的Spring Boot應用配置
  • 深刻理解Spring Boot配置的啓動機制
  • Spring Boot應用的監控與管理

框架簡介

  Spring Boot經過大量的自動化配置等方式簡化了Spring原有樣板化的配置,使開發者能夠快速構建應用。除此以外,Spring Boot還經過一系列Starter POMs的定義,讓咱們整合各項功能的時候,不須要再Maven的pom.xml中維護那些複雜的依賴關係,而是經過相似模塊化的starter模塊定義來引用,使得依賴管理工做變得更爲簡單。
  在現在容器化大行其道的時代,Spring Boot除了能夠很好融入Docker以外,其自身就支持嵌入式的Tomcat、Jetty等容器。因此,經過Spring Boot構建的應用能夠再也不安裝Tomcat,將應用打成war,再部署到Tomcat這樣複雜的構建與部署動做,只需將Spring boot應用打成jar包,並經過java -jar命令直接運行就能啓動一個標準化的web應用,這使得Spring boot應用十分輕便。
 

快速入門

項目構建與解析

1 系統及工具版本要求
  • java 7 及以上版本
  • Spring framework 4.2.7及以上版本
  • Maven 3.2 及以上版本 / Gradle 1.12 及以上版本
2 構建Maven項目

  

 

  • 選擇構建工具 Maven Project、Spring boot版本選擇1.3.7以上,填寫Group和Artifact信息,在Search for dependencies 中搜索須要的其餘依賴包,由於要實現RESTful API,因此能夠添加Web依賴。
  • 單擊Generate Project按鈕下載項目壓縮包
  • 解壓項目包,並用IDE以Maven項目導入。

工程結構解析

 

  • src/main/java: 主程序入口HelloApplication,可經過該類直接啓動Spring Boot項目
  • src/main/resources:配置目錄,引入配置信息。因爲引入了Web模塊,所以產生了static目錄和templates目錄,前者存放靜態資源,如圖片、CSS、javascript等;後者用於存放Web頁面的模板文件
  • src/test:單元測試目錄,生成的HelloApplicationTests經過JUnit4實現,能夠直接用運行Spring Boot應用的測試。

Maven配置分析

<?xml version="1.0" encoding="UTF-8"?>
<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.example</groupId>
   <artifactId>hello</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <packaging>jar</packaging>

   <name>hello</name>
   <description>Demo project for Spring Boot</description>

   <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>1.5.6.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
   </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>
      <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>
  能夠看到,groupId和artifactId對應生成項目時頁面上輸入的內容。另外,默認的打包形式爲jar,由於默認的web模塊依賴會包含嵌入式的Tomcat,使應用的jar自身就具有了提供web服務的能力
  父項目parent配置中定義了Spring Boot版本的基礎依賴以及一些默認配置內容,好比,配置文件application.properties的位置等。
  在項目依賴dependencies配置中,包含了下面兩項:
    spring-boot-starter-web:全棧Web開發模塊,包含嵌入式Tomcat、Spring MVC。
    spring-boot-starter-test:經過測試模塊,包含JUnit、Hamcrest、Mockito。
  這裏所引用的web和test模塊,在Spring Boot生態中被稱爲Starter POMs。Starter POMs是一系列輕便的依賴包,是一套一站式的Spring相關技術的解決方案。開發者在使用和整合模塊時,沒必要再去搜尋樣例式的依賴配置來複制使用,只需引入對應的模塊包便可。好比,開發web應用的時候,就引入spring-boot-starter-web,但願應用具有訪問數據庫能力的時候,那就再引入spring-boot-starter-jdbc或是更好用的spring-boot-starter-data-jpa。
  Spring boot的Starter POMs採用spring-boot-starter-*的命名方式,*表明一個特別的應用功能模塊。
  在最後項目構建的build部分,引入Spring boot的Maven插件,幫助方便的啓停應用,這樣在開發時就不用每次去找主類或是打包成jar來運行微服務,只須要經過 mvn spring-boot:run 命令就能夠快速啓動spring boot應用。
 

實現RESTful API 

  在Spring boot中建立RESTful API的實現代碼和Spring MVC應用同樣,只是減小了一些配置文件,能夠直接開始編寫Controller內容。
  
@RestController
public class HelloController {

    @RequestMapping(value = "index")
    public String index(){
        return "hello";
    }
}
  啓動該應用,經過瀏覽器訪問http://localhost:8080/index,返回預期效果:hello。
 

啓動Spring Boot應用

  一、做爲Java應用程序,能夠直接經過運行擁有main函數的類來啓動
  二、在Maven配置中,以前提到了spring-boot插件,可使用它來啓動,好比執行:mvn spring-boot:run命令,或是直接單擊IDE中對maven插件的工具
  三、在服務器上部署運行時,一般先使用 mvn install 將應用打包成jar包,再經過 java -jar xxx.jar 來啓動應用。
 

配置詳解

配置文件

  在上述示例中提到過src/main.resources目錄是Spring Boot的配置目錄,因此當要爲應用建立個性化配置時,應在該目錄下進行。
  Spring Boot的默認配置文件位置爲src/mian/resources/application.properties。關於Spring boot應用的配置內容均可以幾種在該文件中,根據咱們引入的不一樣starter模塊,能夠在這裏定義容器端口號、數據庫鏈接信息、日誌級別等各類配置信息。好比要修改web模塊的服務端口號,能夠在application.properties文件中添加 server.port=8888 來指定服務端口爲8888(默認端口爲8080)。
  Spring boot的配置文件除了可使用傳統的properties文件以外,還支持YAML文件。
  YAML採用的配置格式不像properties的配置那樣以單純的鍵值對形式來表示,而是以相似大綱的縮進形式來表示。好比
  
server:
  port: 9996
  contextPath: /webux
  tomcat:
    uri-encoding: utf-8
spring:
  application:
    name: emer-business-webux
  thymeleaf:
    cache: false
    suffix: .html
    content-type: text/html; charset=utf-8
    enabled: true
    encoding: utf-8

  經過YAML的配置方式能夠減小配置內容的字符量,其結構也更爲清晰易讀。javascript

自定義參數

  能夠在配置文件中定義一些咱們須要的自定義屬性,而後在應用中經過@Value註解來加載這些自定義參數。(方式不少種)
相關文章
相關標籤/搜索