基於Swagger+SpringBoot快速構建javaweb項目


章節導航

項目源碼地址
  github項目路徑:https://github.com/Vikezhu/springboot-template

 

一、SpringBoot&Swagger簡介

  SpringBoot

  SpringBoot實質上也是基於Spring的一種開發框架,但相比使用Spring框架那些復雜配置過程,以及集成其他框架時帶來的諸多兼容性問題,SpringBoot可以更高效的搭建Spring框架,簡化項目框架的配置,提升應用開發的效率,是開發人員更專注於應用的開發。而且SpringBoot還可以非常方便地集成各種主流框架(如SpringCloud、MyBatis等)。

  目前,使用idea等IDE工具自帶插件,或者通過 https://start.spring.io/ 網站,均可快速的構建一個空白的SpringBoot項目。

  Swagger

  Swagger 是一個規范和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。它可以通過在線編輯接口文檔和數據模型定義,快速生成SpringBoot項目,並構建出用戶定義的對外服務restful接口,以及相關的數據實體類。另外,swagger生成的項目還內嵌由swagger-ui頁面,方便開發和運維人員進行開發與故障定位。

  Swagger是一組開源項目,包括的項目和工具有很多,這里只摘出本教程需要用的幾個項目進行簡要的介紹。

  1、swagger-editor

  swagger-editor是swagger項目提供的一個swagger文檔編輯工具,使用瀏覽器打開即可快速編輯文檔。(下載地址:https://github.com/swagger-api/swagger-editor,下載后解壓壓縮包,入口為文件夾中的index.html) swagger-editor頁面如下圖所示:

  

  文檔可以使用YAML或JSON兩種格式編寫,左邊為編輯區,右邊即時顯示編輯后生成的接口定義等內容。

  2、swagger-codegen

  swagger-codegen 是專為解析swagger說明文檔,生成工程框架代碼的專用工具。(下載地址:https://repo1.maven.org/maven2/io/swagger/swagger-codegen-cli/,下載swagger-codegen-cli.jar的jar包即可。)swagger-codegen 生成工程代碼依賴於swagger-codegen-cli的jar包、swagger-editor編寫的swagger說明文檔(json格式)和swagger配置文件,swagger配置文件也是一個json文件,其中定義了工程名、包目錄、java版本等信息。

 

二、數據模型和接口定義

  首先用swagger-editor定義我們項目的數據模型和接口文檔。這里我們以實現一個簡單的用戶管理系統為目標,實現用戶數據的增刪改查功能。 

  打開swagger-editor的編輯界面,可以看到有一個PetStore的示例。整個說明文檔由幾類信息組成,這里選取重點信息進行解說說明:

  1、基礎信息
    swagger:    #swagger版本
    info:
      title:    #標題
      description:   #文檔說明
      version:     #文檔版本
  2、基本url
    host:      #主機地址
    basePath:    #url前綴
    schemes:   #網絡請求協議:http/https
  3、API標簽
    tags:
  4、接口定義
    paths:
      /user:
        post:    #新增接口
          tags:     #所屬標簽
          operationId:   #方法名(生成代碼后即是controller層的接口方法名)
          produces:    #生產格式:json/xml
          consumes:     #消費格式:json/xml
          parameters:   #請求參數定義
            -name:   #參數名
             in:     #參數類型:可選:body/query/path,分別代表:請求體/url拼接參數/url占位符替換
             required:   #是否必需:true/false
             schema:   #參數結構,可引用definitions中定義的數據模型
              $ref:'#/definitions/User'
             responses:    #返回格式定義
        get:      #查詢接口
        delete:     #刪除接口
        put:      #修改接口
      '/user/{userId}':
        get:    #查詢詳情接口
  5、數據模型定義
    definitions:
      User:   #用戶User類
        type:    #類型:object
        properties:    #參數列表
          userId:    #用戶ID
            type:    #參數類型:object/integer/string/array等
            format:    #參數格式:int32/date-time
            items:     #若是前序的type為array,則需要定義items中的數據類型
              type:
            description: #參數描述

  更多說明,請參考swagger editor官方文檔:https://swagger.io/specification/v2/

  按照需求定義好接口及數據字典后,點擊頁面上方的菜單欄:File——Convert and save as JSON,將說明文檔保存到本地。


三、項目框架生成

  將swagger-editor編輯好的說明文檔導出為json文件后(swagger.json),移動至swagger-codegen-cli.jar所在的目錄下,並在該目錄下創建名為swagger_cfg.json的json配置文件,內容如下圖所示:

  {
    "groupId":"vike.server",
    "artifactId":"ums",
    "modelPackage":"com.vike.server.ums.model",
    "apiPackage":"com.vike.server.ums.api",
    "basePackage":"com.vike.server.ums",
    "configPackage":"com.vike.server.ums.config",
    "java8":"true"
  }

  其中groupId和artifactId為項目對應的組織名和模塊名。

  之后,打開cmd.exe,進入到swagger-codegen-cli.jar所在的目錄后,執行以下命令,自動生成工程:

    java -jar swagger-codegen-cli.jar generate -l spring -c swagger_cfg.json -i swagger.json -o D:\Code\ums

  其中,-c后的參數為配置文件,-i后的參數為swagger說明文檔,-o為生成工程代碼的導出路徑。

  根據swagger-codegen的版本不同,工程中maven依賴的SpringBoot版本可能有所不同,大家可以根據自己的需求修改相關的版本依賴。本項目采用了spring-boot-starter-parent的2.0.4.RELEASE版本。(PS:這里在使用2.X版本的springboot時有個坑,工程中的配置文件application.properties中,server.contextPath參數已棄用,應該改為server.servlet.context-path才能正確運行。)

  工程的入口類為basePackage下的Swagger2SpringBoot.java,運行該類,當控制台打印諸如:Started Swagger2SpringBoot in 7.032 seconds (JVM running for 8.761)的內容時,說明應用啟動成功。打開瀏覽器,輸入地址: http://localhost:8080/ums/api/v1/swagger-ui.html (默認端口為8080),若顯示如下頁面,說明應用啟動成功。

  

  后續的接口聯調及上線后的運維均可通過此頁面來進行,界面簡潔,十分方便。至此,工程代碼框架即已搭建完成。 


四、業務邏輯實現

  1、數據庫准備

  我們在ums庫下創建一張ums_user的表,sql創表語句如下:

    CREATE TABLE `ums_user` (
      `user_id` varchar(100) NOT NULL,
      `username` varchar(100) NOT NULL,
      `age` int(11) NOT NULL,
      `code` varchar(100) NOT NULL,
      `phone` varchar(100) NOT NULL,
      `apartment` varchar(100) NOT NULL,
      `biz_line` varchar(100) NOT NULL,
      `email` varchar(100) NOT NULL,
      `entry_time` varchar(100) NOT NULL,
      `status` int(11) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  成功創表后,在表中隨意插入兩條數據。

  2、依賴引入及配置信息

  mybatis和mysql依賴的引入:

    <!--Spring Boot Mybatis 依賴-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>${mybatis-spring-boot}</version>
    </dependency>

    <!--MySQL 連接驅動依賴-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql-connector}</version>
    </dependency>    

  mysql數據庫連接配置信息:

    # mybatis
   #mybatis xml文件所在路徑 mybatis.mapperLocations = classpath:/mapper/*.xml
   #實體類包路徑 mybatis.typeAliasesPackage = com.vike.server.ums.model # mysql spring.datasource.url=jdbc:mysql://localhost:3306/ums?useUnicode=true
&characterEncoding=utf8&useSSL=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver

  3、實現用戶的增刪改查

  *.api包下為Controller層:實現UserApiController類繼承的接口的增刪改查方法。

  創建*.service包,新建UserService接口,定義增刪改查方法。

  創建*.service.impl包,新建UserServiceImpl方法,實現UserService接口及其方法。將UserServiceImpl類添加@Service注解。

  創建*.dao包,新建UserDao接口,定義增刪改查方法。

  在resources目錄下,新建名為mapper的文件夾,創建名為UserMapper.xml的文件。注意mapper的命名空間namespace的值必須指向UserDao的全路徑。

  啟動類Swagger2SpringBoot中添加注解@MapperScan("com.vike.server.ums.dao"),掃描mapper接口類。

  4、啟動Swagger2SpringBoot,打開swagger-ui頁面,即可進行接口的驗證和調試!

  項目源碼請參考文章開始處的鏈接!!如有任何疑問和建議,歡迎溝通交流。

 

參考文獻:(文章僅做交流學習,侵權即刪!!)

1、https://www.bysocket.com/technique/1610.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM