聊一下简易版的“Spring Boot”写的咋样了

开发 项目管理
昨天早上,6 点多一点就起来写代码了,前天晚上和朋友一起吃晚饭回来之后也搞到很晚,有时候想尽快把某些东西写完的时候确实是会这样。

[[344500]]

本文转载自微信公众号「JavaGuide」,作者Guide哥 。转载本文请联系JavaGuide公众号。 

昨天早上,6 点多一点就起来写代码了,前天晚上和朋友一起吃晚饭回来之后也搞到很晚,有时候想尽快把某些东西写完的时候确实是会这样。

但是,说实话效率会降低很多,不推荐这样做。像我之前写guide-rpc-framework[1] 的时候,经常周末不出门,一坐就是一天。到了晚上整个人一脸油,眼睛还很酸,效率低了太多。

目前的话,已经把 Spring MVC 相关常用的注解比如@GetMapping 、@PostMapping 、@PathVariable 写完了。

整个项目的目录结构如下,还算比较清晰。我也已经将项目开源出来了,地址:https://github.com/Snailclimb/jsoncat 。原创开源不易,觉得不错的话,欢迎给良心作者 1 个 star 鼓励一下!

 

介绍

jsoncat 是我(Guide 哥,Gai 的哥)模仿 Spring Boot 写的一个轻量级的 HTTP 框架。

jsoncat 内置由 Netty 编写 HTTP 服务器,无需额外依赖 Tomcat 之类的 web 服务器。使用 Netty 几十行代码即可实现一个简易的 HTTP 服务,性能高且轻量。

为什么要写?

写这个东西只是自己个人的兴趣爱好使然,也不是说非要拿到项目上实际去使用,主要目的还是为了提高自己的编码能力。推荐小伙伴们也要尽量能够将自己的想法付诸于行动。

理论知识固然重要,但是脱离于实践的理论并不可靠。相比于 CRUD ,自己造个轮子,肯定是更有意思,也更能锻炼自己的编程能力和解决问题的能力。

特点

1.内置由 Netty 编写 HTTP 服务器,无需额外依赖 Tomcat 之类的 web 服务

2.代码简洁,可读性好

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

4.后端只返回 json 数据给前端

5.集成了 checkstyle 、spotbugs、pmd 并设置了 commit 钩子来保证代码质量

框架基本情况和代办

功能实现上,没有太去模仿参考 Spring 的源码,那样的话没太大必要,完全就是按照自己的想法写的,会借鉴一些 Spring 源码的思想。

功能其实写的挺快的,大部分时间都在重构。讲真, 我已经很尽力地保证代码的可读性了。尽量使用最少的代码实现功能, 并且不影响可读性。

目前,我还不是特别满意,欢迎小伙伴们一起来完善啊!人多力量大!

 

功能演示

User.java :用户实体类

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

UserDto.java : 创建用户的传输对象

  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 请求

 

请求错误的处理情况

当传入的参数类型不正确时:

 

当指定的参数未传递时:

 

References

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

 

 

 

责任编辑:武晓燕 来源: JavaGuide
相关推荐

2022-10-20 11:49:49

JS动画帧,CSS

2023-12-29 08:31:49

Spring框架模块

2021-04-21 14:19:52

javaignalHandle接口

2017-01-13 08:37:57

PythonAlphaGoMuGo

2021-11-24 10:10:32

axios前端拦截器

2021-07-12 15:50:55

Go 语言netstat命令

2021-03-26 00:20:34

NFT区块链数据库

2022-02-11 13:44:56

fiber架构React

2021-04-27 07:52:18

SQLNULLOR

2021-04-21 21:06:11

数据结构

2022-02-08 08:31:52

const关键字C语言

2021-06-30 00:19:43

AOP动态代理

2023-12-28 09:59:37

Spring容器XML

2021-05-06 15:05:57

Python自动化工具

2021-03-10 00:02:01

Redis

2021-05-31 06:28:35

AutoMapper对象映射器

2009-12-08 12:24:36

LinuxNTFS分区写操作

2011-12-05 10:37:53

Linux服务器Shell脚本

2021-06-06 12:59:14

实现方式计数

2023-09-06 09:54:12

AI模型
点赞
收藏

51CTO技术栈公众号