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

成都創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、普蘭網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、成都商城網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為普蘭等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
昨天早上,6 點(diǎn)多一點(diǎn)就起來寫代碼了,前天晚上和朋友一起吃晚飯回來之后也搞到很晚,有時(shí)候想盡快把某些東西寫完的時(shí)候確實(shí)是會(huì)這樣。
但是,說實(shí)話效率會(huì)降低很多,不推薦這樣做。像我之前寫guide-rpc-framework[1] 的時(shí)候,經(jīng)常周末不出門,一坐就是一天。到了晚上整個(gè)人一臉油,眼睛還很酸,效率低了太多。
目前的話,已經(jīng)把 Spring MVC 相關(guān)常用的注解比如@GetMapping 、@PostMapping 、@PathVariable 寫完了。
整個(gè)項(xiàng)目的目錄結(jié)構(gòu)如下,還算比較清晰。我也已經(jīng)將項(xiàng)目開源出來了,地址:https://github.com/Snailclimb/jsoncat 。原創(chuàng)開源不易,覺得不錯(cuò)的話,歡迎給良心作者 1 個(gè) star 鼓勵(lì)一下!
介紹
jsoncat 是我(Guide 哥,Gai 的哥)模仿 Spring Boot 寫的一個(gè)輕量級的 HTTP 框架。
jsoncat 內(nèi)置由 Netty 編寫 HTTP 服務(wù)器,無需額外依賴 Tomcat 之類的 web 服務(wù)器。使用 Netty 幾十行代碼即可實(shí)現(xiàn)一個(gè)簡易的 HTTP 服務(wù),性能高且輕量。
為什么要寫?
寫這個(gè)東西只是自己個(gè)人的興趣愛好使然,也不是說非要拿到項(xiàng)目上實(shí)際去使用,主要目的還是為了提高自己的編碼能力。推薦小伙伴們也要盡量能夠?qū)⒆约旱南敕ǜ吨T于行動(dòng)。
理論知識固然重要,但是脫離于實(shí)踐的理論并不可靠。相比于 CRUD ,自己造個(gè)輪子,肯定是更有意思,也更能鍛煉自己的編程能力和解決問題的能力。
特點(diǎn)
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ì)量
框架基本情況和代辦
功能實(shí)現(xiàn)上,沒有太去模仿參考 Spring 的源碼,那樣的話沒太大必要,完全就是按照自己的想法寫的,會(huì)借鑒一些 Spring 源碼的思想。
功能其實(shí)寫的挺快的,大部分時(shí)間都在重構(gòu)。講真, 我已經(jīng)很盡力地保證代碼的可讀性了。盡量使用最少的代碼實(shí)現(xiàn)功能, 并且不影響可讀性。
目前,我還不是特別滿意,歡迎小伙伴們一起來完善啊!人多力量大!
功能演示
User.java :用戶實(shí)體類
- @Data
- @AllArgsConstructor
- public class User {
- private String name;
- private String des;
- private Integer age;
- }
UserDto.java : 創(chuàng)建用戶的傳輸對象
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- public class UserDto {
- private String name;
- private String des;
- private Integer age;
- }
UserController.java:用戶層 controller
- @RestController("/user")
- public class UserController {
- private static HashMap
users; - private static Integer id;
- static {
- users = new HashMap<>();
- users.put(1, new User("蓋倫", "德瑪西亞", 22));
- id = 2;
- }
- @GetMapping
- public User get(@RequestParam("name") String name, @RequestParam("des") String des, @RequestParam("age") Integer age) {
- return new User(name, des, age);
- }
- @GetMapping("/{id}")
- public User get(@PathVariable("id") Integer id) {
- return users.get(id);
- }
- @PostMapping
- public List
create(@RequestBody UserDto userDto) { - users.put(id++, new User(userDto.getName(), userDto.getDes(), userDto.getAge()));
- return new ArrayList<>(users.values());
- }
- }
Get 請求:@PathVariable傳參
Get 請求:@RequestParam傳參
Post 請求
請求錯(cuò)誤的處理情況
當(dāng)傳入的參數(shù)類型不正確時(shí):
當(dāng)指定的參數(shù)未傳遞時(shí):
References
[1] guide-rpc-framework: https://github.com/Snailclimb/guide-rpc-framework
新聞標(biāo)題:聊一下簡易版的“SpringBoot”寫的咋樣了
分享URL:http://fisionsoft.com.cn/article/cojcidj.html


咨詢
建站咨詢
