五分鍾搭建一個企業級web項目


前言

使用官方springboot-starter和第三方腳手架工具hunter-spring-boot-starter,

快速構建項目,在五分鍾內即可進行業務開發。

一、使用官方starter快速搭建一個項目

  1. 使用IDEA spring initializr 新建一個spring項目
    image.png

  2. 填寫一些基本信息
    group: 組織,一般是域名倒寫
    artifact:項目
    image.png

  3. 添加web支持
    image.png

  4. 配置文件改名
    在resource目錄下默認生成的配置文件是application.properties,把他改成 application.yml

  5. 運行
    在項目下有一個唯一的java類,運行這個main方法即可。

  6. 訪問

瀏覽器訪問http://localhost:8080/出現404項目運行成功

二、使用第三方starter完善

springboot已經大量簡化了xml配置,但如果想進入業務的開發,還有些許配置要做,還要引入一些必備的工具類等,因此在springboot的基礎上,hunter-spring-boot-starter又做了一些提供了一些常用工具和自動裝配,使你馬上進入業務開發階段。
具體查看詳細文檔

  • 項目功能:
  1. 通用返回類Result
  2. 全局異常處理
  3. Jackson工具類
  4. StringUtil工具
  5. Redis工具類
  6. RestTemplate工具類
  7. 線程池自動裝配
  8. swagger 自動裝配
  9. DefaultWebMVC注解
  • 包含的依賴
  1. Apache common-lang3
  2. common-lang
  3. lombok
  4. OKhttp

在pom引入jar包

<dependency>
       <groupId>com.github.gxhunter</groupId>
       <artifactId>hunter-spring-boot-starter</artifactId>
       <version>0.5</version>
</dependency>

使用內置的通用返回類Result

在企業后端開發中,Controller一般有一個通用類result,
hunter-spring-boot-starter提供了一個通用返回類實踐,所有的Controller都使用這個類作為返回值。
示例Controller

@RestController
public class IndexController{
    @GetMapping("index")
    public Result index(){
        return Result.success("請求首頁成功");
    }
}

使用postman調用接口
image.png

Result字段描述

字段 類型 描述
status int 狀態碼
message string 返回信息
data T 攜帶數據
success boolean 是否成功

靜態方法

除了上述的Result.success(Obj)用於返回成功,並攜帶Obj數據,Result還提供了其他的靜態方法

方法名稱 描述
success(T data) 成功並返回數據
success() 成功不攜帶數據
successMsg(String msg) 成功並返回信息
failed(String str) 失敗,並提示信息,code使用默認
failed(T data,IErrorCode code) 失敗,攜帶數據和提示信息和code
failed(T data,String message) 失敗,並攜帶數據和提示信息
failed() 失敗,不攜帶信息

返回碼對照表

遵循COC原則,內置了幾個返回碼枚舉,你也可以實現IResponseCode.java自定義擴展
內置的返回碼枚舉在com.github.gxhunter.enums.ResultEnum

返回碼 描述
0 成功
1 查詢不到任何內容
2 新建失敗
3 修改失敗
4 刪除失敗
1000 操作失敗(一般是拋出服務端手段throw ApiException)
1001 參數校驗失敗
1999 網絡超時(上述之外的其他異常)

使用內置的異常處理器

無需任何配置,默認開啟了異常處理器,分類捕獲了ApiException、MethodArgumentNotValidException、Exception三種異常(可自行擴展)
查看如下實例代碼

    @PostMapping("/error")
    public void error(){
        int a = 1/0;
    }

    @PostMapping("/apierror")
    public void apiError(){
// 模擬數據庫操作失敗
        throw new ApiException("數據關聯失敗");
    }
  • 請求 /error 接口,拋出的異常沒做分類處理,返回status為1999,提示信息是網超時
  • 請求 /apierror 拋出的異常是ApiException,在異常處理器有做分類,返回結果如下
    image.png
  • 參數校驗失敗異常
    如下一個實體類person,注解限制了name字段不能為null
@Data
public class Person{
    @NotNull
    private String name;
    private long age;
}

對應Controller如下:

    @PutMapping("/verify")
    public Result<Person> verifyPerson(@RequestBody@Valid Person person){
        return Result.success(person);
    }

@Valid表示開啟校驗,這個注解必須要加

前端傳入的name字段為空時,返回:

image.png


swagger支持

前面使用的postman,能夠調用實現restfulapi的調用,但是這樣每次都要自己填寫url和參數實屬麻煩,為此,本starter也實現了swagger2的自動裝配。

  1. 引入swagger2包
<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.2</version>
        </dependency>
  1. 在application.yml配置基本信息
    有兩個必配項,其他為選配項。
    必配項: 1.enabled是否開啟swagger 2.base-package 掃描的包(一般配Controller所在包路徑即可)
    image.png

  2. 訪問swagger
    重啟項目,訪問http://localhost:8080/swagger-ui.html
    顯示如下界面,swagger就配置成功啦。
    image.png

@DefaultWebMVC注解

默認情況下,java序列化過程有許多坑,這個注解就是為解決這些坑而生。

場景

有如下一個類

@Data
public class Person{
    private long id;
    @NotNull
    private String name;
    private long age;
    private Date birthday;
    private LocalDateTime registerTime;
}

在Controller中,新增一個接口

    @GetMapping("/getPerson")
    public Result getPerson(){
        Person person = new Person();
        person.setId(12345678912233L);
        person.setBirthday(new Date());
        person.setRegisterTime(LocalDateTime.now());
        return Result.success(person);
    }

結果前端請求到的數據如下
image.png
有幾個問題

  1. 接收到id與后端傳過來的不一樣,這是long類型精度丟失
  2. 時間格式不友好

解決方案

在啟動類加上@DefaultWebMVC,無需其他操作,
此時再請求上述接口,返回的數據為:
image.png

@DefaultWebMVC注解功能總結:

  1. json時間格式化 為yyyy-MM-dd HH:mm:ss
  2. 時區指定為GMT+8
  3. long類型自動序列化為字符串,解決精度丟失問題。
  4. 其他在GitHub上查看詳細文檔

三、其他

到此項目初始化已經完成,可馬上進入業務開發了,還有內置其他工具,如
JsonUtil、線程池、redisUtil、RestUtil、ftpUtil、StringUtil
這里就不再贅述,有興趣可以查看詳細文檔






免責聲明!

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



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