当前位置: 首页 > 科技观察

下面说说《SpringBoot》简易版是怎么写的

时间:2023-03-12 00:48:31 科技观察

转载本文,请联系JavaGuide公众号。昨天早上,我六点多就起床写代码了。前天晚上,我和朋友一起吃饭,很晚才回来。有时候,当我想尽快写完一些东西时,这是真的。不过说实话,效率会降低很多,不推荐这样做。像我之前写guide-rpc-framework[1]的时候,周末经常不出门,就坐一天。晚上整张脸都是油的,眼睛还酸,效率太低了。目前,SpringMVC相关的常用注解,如@GetMapping、@PostMapping、@PathVariable,都已经写好了。整个项目的目录结构如下,比较清晰。项目我也开源了,地址:https://github.com/Snailclimb/jsoncat。原创开源不易,如果觉得不错,欢迎1星鼓励良心作者!介绍jsoncat是我(导哥,盖哥)模仿SpringBoot写的一个轻量级HTTP框架。jsoncat内置了Netty编写的HTTP服务器,无需额外依赖Tomcat等Web服务器。一个简单的HTTP服务在Netty中用几十行代码就可以实现,性能高,重量轻。你为什么要写作?写这个东西只是出于个人爱好,并不代表一定要拿到项目中去实际使用。主要目的是提高自己的编码能力。建议朋友们尽量把自己的想法付诸行动。理论知识固然重要,但脱离实践的理论是不可靠的。和CRUD相比,自己造轮子肯定更有趣,也能锻炼自己的编程能力和解决问题的能力。特点1.内置Netty编写的HTTP服务器,无需依赖Tomcat等额外的Web服务2.代码简洁易读3.支持SpringMVC的常用注解,使用方法同SpringMVC4.后端只返回json数据给前端5.集成checkstyle、spotbugs、pmd并设置commithooks,保证代码质量框架和代理功能实现的基本情况。并没有过多的模仿Spring的源码。那样的话就没有必要了,完全是按照自己的思路写的写的,会借鉴Spring源码的一些思路。函数其实写的很快,大部分时间都在重构。老实说,我已经尽力保持代码的可读性。在不影响可读性的情况下,尽量使用最少的代码来实现功能。目前,我不是特别满意。欢迎朋友们一起改进!人多力量大!功能演示User.java:用户实体类@Data@AllArgsConstructorpublicclassUser{privateStringname;privateStringdes;privateIntegerage;}UserDto.java:创建用户Transfer对象@Data@AllArgsConstructor@NoArgsConstructorpublicclassUserDto{privateStringname;privateStringdes;privateIntegerage;}UserController.java:用户层控制器@RestController("/user")publicclassUserController{privatestaticHashMapusers;privatestaticIntegerid;static{users=newHashMap<>();users.put(1,newUser("Galen","Demacia",22));id=2;}@GetMappingpublicUserget(@RequestParam("name")Stringname,@RequestParam("des")Stringdes,@RequestParam("age")Integerage){returnnewUser(name,des,age);}@GetMapping("/{id}")publicUserget(@PathVariable("id")Integerid){returnusers.get(id);}@PostMappingpublicListcreate(@RequestBodyUserDtouserDto){users.put(id++,newUser(userDto.getName(),userDto.getDes(),userDto.getAge()));returnnewArrayList<>(users.values());}}获取请求:@PathVariable传参获取请求:@RequestParam传参传入参数类型不正确时post请求请求错误处理When:When未传递指定参数:参考文献[1]guide-rpc-framework:https://github.com/Snailclimb/guide-rpc-framework