簡介
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,這裏進行一些常用的請求GET
、POST
、PUT
等案例測試,代碼沒用貼全,請查看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.本案例代碼大家完全可以引用到自己的項目中進行封裝開發。
推薦
-
我的博客
大家可以到我的博客https://eirunye.github.io進行瀏覽相關文章,大家一起相互探討技術。 -
Spring Boot 系列
如果大家想了解更多的Spring Boot相關博文請進入我的Spring Boot系列博客棧