自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊一下簡易版的“Spring Boot”寫的咋樣了

開發(fā) 項目管理
昨天早上,6 點多一點就起來寫代碼了,前天晚上和朋友一起吃晚飯回來之后也搞到很晚,有時候想盡快把某些東西寫完的時候確實是會這樣。

[[344500]]

本文轉(zhuǎn)載自微信公眾號「JavaGuide」,作者Guide哥 。轉(zhuǎn)載本文請聯(lián)系JavaGuide公眾號。 

昨天早上,6 點多一點就起來寫代碼了,前天晚上和朋友一起吃晚飯回來之后也搞到很晚,有時候想盡快把某些東西寫完的時候確實是會這樣。

但是,說實話效率會降低很多,不推薦這樣做。像我之前寫guide-rpc-framework[1] 的時候,經(jīng)常周末不出門,一坐就是一天。到了晚上整個人一臉油,眼睛還很酸,效率低了太多。

目前的話,已經(jīng)把 Spring MVC 相關(guān)常用的注解比如@GetMapping 、@PostMapping 、@PathVariable 寫完了。

整個項目的目錄結(jié)構(gòu)如下,還算比較清晰。我也已經(jīng)將項目開源出來了,地址:https://github.com/Snailclimb/jsoncat 。原創(chuàng)開源不易,覺得不錯的話,歡迎給良心作者 1 個 star 鼓勵一下!

 

介紹

jsoncat 是我(Guide 哥,Gai 的哥)模仿 Spring Boot 寫的一個輕量級的 HTTP 框架。

jsoncat 內(nèi)置由 Netty 編寫 HTTP 服務(wù)器,無需額外依賴 Tomcat 之類的 web 服務(wù)器。使用 Netty 幾十行代碼即可實現(xiàn)一個簡易的 HTTP 服務(wù),性能高且輕量。

為什么要寫?

寫這個東西只是自己個人的興趣愛好使然,也不是說非要拿到項目上實際去使用,主要目的還是為了提高自己的編碼能力。推薦小伙伴們也要盡量能夠?qū)⒆约旱南敕ǜ吨T于行動。

理論知識固然重要,但是脫離于實踐的理論并不可靠。相比于 CRUD ,自己造個輪子,肯定是更有意思,也更能鍛煉自己的編程能力和解決問題的能力。

特點

1.內(nèi)置由 Netty 編寫 HTTP 服務(wù)器,無需額外依賴 Tomcat 之類的 web 服務(wù)

2.代碼簡潔,可讀性好

3.支持 Spring MVC 常用的注解,用法也和 Spring MVC 一樣

4.后端只返回 json 數(shù)據(jù)給前端

5.集成了 checkstyle 、spotbugs、pmd 并設(shè)置了 commit 鉤子來保證代碼質(zhì)量

框架基本情況和代辦

功能實現(xiàn)上,沒有太去模仿參考 Spring 的源碼,那樣的話沒太大必要,完全就是按照自己的想法寫的,會借鑒一些 Spring 源碼的思想。

功能其實寫的挺快的,大部分時間都在重構(gòu)。講真, 我已經(jīng)很盡力地保證代碼的可讀性了。盡量使用最少的代碼實現(xiàn)功能, 并且不影響可讀性。

目前,我還不是特別滿意,歡迎小伙伴們一起來完善啊!人多力量大!

 

功能演示

User.java :用戶實體類

  1. @Data 
  2. @AllArgsConstructor 
  3. public class User { 
  4.     private String name
  5.     private String des; 
  6.     private Integer age; 

UserDto.java : 創(chuàng)建用戶的傳輸對象

  1. @Data 
  2. @AllArgsConstructor 
  3. @NoArgsConstructor 
  4. public class UserDto { 
  5.     private String name
  6.     private String des; 
  7.     private Integer age; 

UserController.java:用戶層 controller

  1. @RestController("/user"
  2. public class UserController { 
  3.     private static HashMap<IntegerUser> users; 
  4.     private static Integer id; 
  5.  
  6.     static { 
  7.         users = new HashMap<>(); 
  8.         users.put(1, new User("蓋倫""德瑪西亞", 22)); 
  9.         id = 2; 
  10.     } 
  11.  
  12.     @GetMapping 
  13.     public User get(@RequestParam("name") String name, @RequestParam("des") String des, @RequestParam("age"Integer age) { 
  14.         return new User(name, des, age); 
  15.     } 
  16.  
  17.     @GetMapping("/{id}"
  18.     public User get(@PathVariable("id"Integer id) { 
  19.         return users.get(id); 
  20.     } 
  21.  
  22.     @PostMapping 
  23.     public List<Usercreate(@RequestBody UserDto userDto) { 
  24.         users.put(id++, new User(userDto.getName(), userDto.getDes(), userDto.getAge())); 
  25.         return new ArrayList<>(users.values()); 
  26.     } 

Get 請求:@PathVariable傳參

 

Get 請求:@RequestParam傳參

 

Post 請求

 

請求錯誤的處理情況

當(dāng)傳入的參數(shù)類型不正確時:

 

當(dāng)指定的參數(shù)未傳遞時:

 

References

[1] guide-rpc-framework: https://github.com/Snailclimb/guide-rpc-framework

 

 

 

責(zé)任編輯:武曉燕 來源: JavaGuide
相關(guān)推薦

2022-10-20 11:49:49

JS動畫幀,CSS

2023-12-29 08:31:49

Spring框架模塊

2021-04-21 14:19:52

javaignalHandle接口

2025-01-10 11:07:28

2017-01-13 08:37:57

PythonAlphaGoMuGo

2021-11-24 10:10:32

axios前端攔截器

2021-03-26 00:20:34

NFT區(qū)塊鏈數(shù)據(jù)庫

2021-04-27 07:52:18

SQLNULLOR

2021-07-12 15:50:55

Go 語言netstat命令

2021-04-21 21:06:11

數(shù)據(jù)結(jié)構(gòu)

2022-02-08 08:31:52

const關(guān)鍵字C語言

2021-06-30 00:19:43

AOP動態(tài)代理

2022-02-11 13:44:56

fiber架構(gòu)React

2021-06-06 12:59:14

實現(xiàn)方式計數(shù)

2021-05-31 06:28:35

AutoMapper對象映射器

2021-03-10 00:02:01

Redis

2023-12-28 09:59:37

Spring容器XML

2021-05-06 15:05:57

Python自動化工具

2009-12-08 12:24:36

LinuxNTFS分區(qū)寫操作

2020-06-11 18:06:03

電腦電路板元件
點贊
收藏

51CTO技術(shù)棧公眾號