Spring Boot 項目如何搭建(四)

簡介

Spring Boot項目的搭建,常用實例分析

在項目開發中我們一般情況下提供給APP或者網站應用的接口一般的請求方式是***GET、POST、PUT***等等,那麼接下來我們將通過一個簡單的案例來進行分析,帶領大家進入Spring Boot項目的開發,創建(層級分明,思路請析)、編碼,主要是 搭建項目 等,如何搭建一個Spring Boot開發項目呢?。

項目結構創建

項目目錄如下,包層級分明

一般如下圖所示:

在***src***目錄下的***main/java***裏面的創建的包級目錄,進行分析如下:

/----------------------------------
|-- controller:主要是控制器,通過註解@RestController,Spring4之後新加的註解,原來返回json數據格式,通@RequestMapping,設置訪問URI。
|-- enums: 主要是封裝返回碼的提示。
|-- exception: 主要是封裝異常打印輸出。
|-- handle: 捕捉異常處理
|-- model:實體類
|-- repository:Jpa使用封裝,假如使用MyBatis的會進行其封裝,後期文章會說明到MyBatis
|-- service:邏輯處理封裝,返回數據給Controller類
|-- utils:封裝一些工具類
|-- 其他:在開發中還有一些需要創建其他包,根據自己需求。
\------------------------------------

主要代碼分析

這裏主要是寫一個簡單的事例進行參考包層級之間的調用。

代碼註解如下:

1.EirunyeController.class,這裏進行一些常用的請求GETPOSTPUT等案例測試,代碼沒用貼全,請查看EirunyeController.class

@RestController
@RequestMapping("/Eirunye") //設置請求的父級標籤URI
public class EirunyeController {

    @Autowired //注:Autowired是按類型進行裝配,可獲取它所裝配類的屬性
    EirunyeService eirunyeService;
    /**
     * 訪問返回數據
     *
     * @return JSON EiBean
     * @throws Exception 出現異常處理
     */
    @GetMapping(value = "/get/bean")//url===>http:localhost:8091/Eirunye/get/bean
    public Result<EiBean> getEiBeanData() throws Exception {

        return eirunyeService.getEiBeanData();
    }
/**
     *  POST請求
     * @param eiBean
     * @return
     * @throws Exception
     */
    @PostMapping(value = "/save/bean") //url===>http:localhost:8091/Eirunye/save/bean
    public Result<EiBean> saveEiBeanData(@Valid EiBean eiBean) throws Exception {

        return eirunyeService.saveEiBeanData(eiBean);
    }
 /**
     *  PUT請求
     * @param eiBean
     * @return
     * @throws Exception
     */
    @RequestMapping(value = "/put/eiBean", method = RequestMethod.PUT)//url===>http:localhost:8091/Eirunye/put/eiBean
    public Result<EiBean> putEiBeanData(@Valid EiBean eiBean) throws Exception{
        return eirunyeService.putEiBeanData(eiBean);
    }
/**
     * DELETE 請求案例
     * @param id id
     * @return JSON EiBean
     * @throws Exception 異常處理
     */
    @DeleteMapping(value = "/delete/Bean/{id}")//url===>http:localhost:8091/Eirunye/delete/Bean/1
    public Result<EiBean> deleteEiBeanDataById(@PathVariable("id")Integer id) throws Exception{
        return eirunyeService.deleteEiBeanDataById(id);
    }
}

2.EirunyeService.class

@Service 用於標註業務層組件:將當前類註冊爲Spring的Bean

@Service // 用於標註業務層組件:將當前類註冊爲Spring的Bean
public class EirunyeService {

    /**
     * @return Result<EiBean>
     * @throws EirunyeException 異常處理
     */
    public Result<EiBean> getEiBeanData() throws EirunyeException{
        EiBean eiBean = new EiBean();
        eiBean.setName("Eirunye");
        eiBean.setAge(19);
        eiBean.setHobby("Java Spring Boot");
        return ResultUtil.globalInfo(ResultEnum.SUCCESS,eiBean);
    }
}

EiBean.class

public class EiBean {

    private String name;

    private int age;

    private String hobby;
//get/set...
}

返回JSON數據封裝

ResultUtil.class表示返回封裝

/**
 * Author Eirunye
 * Created by on 2018/8/24.
 * Describe ResultUtil 返回結果封裝
 */
public class ResultUtil {

    public static Result globalInfo(ResultEnum resultEnum, Object object) {
        Result result = new Result();
        result.setCode(resultEnum.getCode());
        result.setMsg(resultEnum.getMsg());
        result.setData(object);
        return result;
    }
    public static  Result error(Integer code,String msg){
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }
}

ResultEnum枚舉,進行封裝符合字符提示

/**
 * Author Eirunye
 * Created by on 2018/8/24.
 * Describe ResultEnum
 */
public enum ResultEnum {

    UNKNOWN_ERROR(-1, "UNKNOW ERROR"),//返回失敗
    SUCCESS(0, "SUCEESSS"), ///返回成功
    ///這裏大家定義自己的返回系列
    ;
    private Integer code; //返回碼 0表示成功,1表示失敗,-1未知錯誤
    private String msg;

    ResultEnum(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
    public Integer getCode() {
        return code;
    }
    public String getMsg() {
        return msg;
    }
}

添加異常處理,這裏只是簡單的提示,後期會講解到Spring Boot如何優雅的封裝異常。
EirunyeException.class這裏表示封裝的一次處理。

/**
 * Author Eirunye
 * Created by on 2018/8/24.
 * Describe ResultEnum
 */
public class EirunyeException extends RuntimeException {

    private Integer code;
    public EirunyeException(ResultEnum resultEnum) {
        super(resultEnum.getMsg());
        this.code = resultEnum.getCode();
    }
    public Integer getCode() {
        return code;
    }
    public void setCode(Integer code) {
        this.code = code;
    }
}

這裏主要講解的是常用的註解方法。需要更多的情況官方文檔。

註解 解釋說明
@RestController 表示的是:@ResponseBody@Controller,作用於類,返回默認爲JSON數據
@Controller 表示視圖可以解析jsp、xml等文檔,需要在方法中添加@ResponseBody,返回JSON
@ResponseBody 作用於方法中,如果類中有@RestController,就不需要添加@ResponseBody
@RequestMapping("/Eirunye") 作用於類中是表示設置請求的父級標籤URI,每個URI必須帶父級標籤如:http://localhost:8080/Eirunye/xxxx
作用於方法是表示默認爲GET請求
@RequestMapping(value = "/put/eiBean",method = RequestMethod.PUT) 表示PUT請求,如圖RequestMethod.png 常用的請求方法
@GetMapping(value = "/bean") 表示GET請求
@GetMapping(value = "/get/hello/{id}")表示參數id,看上面代碼引用@PathVariable("id")
@PathVariable("xx") 表示在方法的參數中引用,獲取URL中{xx}中的數據,xx表示的字段相同,看以上代碼id
@RequestParam 表示請求參數,看以上代碼(@RequestParam("name") String name, @RequestParam("age") int age)
@PostMapping(value = "/save/bean") 表示POST請求,@RequestMapping(value = "/save/bean", method = RequestMethod.POST)簡寫,參數(@Valid EiBean eiBean)或者params形式等
@DeleteMapping(value = "delete/Bean/{id}") 表示DELETE請求,@RequestMapping(value = "delete/Bean/{id}", method = RequestMethod.DELETE)
@Service 用於標註業務層組件:將當前類註冊爲Spring的Bean,操作數據庫一般在這裏進行
  • 注:在後期文章遇到新的註解會說明到。

測試

在接下來會有一篇博文會詳細講解在開發中我們如何進行測試(#),這裏只進行一些簡單測試

在這裏我們只需要進行一下訪問結果,如下:

  • Postman請求如下:
    Postman請求有全部滿足要求的請求,切換請求方法即可。
  • IDEA請求如下:

下載

總結

1.學習本篇,我們知道如何搭建一個好的項目工程,常用的功能架構
2.我們在搭建項目的時候要儘可能考慮到我們需要的處理邏輯,選型,然後進行封裝,這只是一個簡單的項目搭建,在正常情況下,假如添加MyBatis或者其他數據庫操作時,最好分成處理,這裏我們閱讀代碼非常方便,異常處理非常重要,我們能快速定位錯誤位置等等。
3.打家可以通過該案例來進行搭建項目,符合自己的代碼編寫項目操作。
4.本案例代碼大家完全可以引用到自己的項目中進行封裝開發。

推薦

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章