乐趣区

关于spring:手撸了一个HTTP框架支持Sprng-MVCIOCAOP拦截器配置文件读取

https://github.com/Snailclimb/jsoncat:仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架

间隔上一次给小伙伴们汇报简易版的“Spring Boot”的实现状况曾经有半个月了。工夫过得是真特么快啊!

01

这半个月里,我的 HTTP 框架曾经反对 AOP、拦截器(也是 AOP 的一种)、属性文件读取等性能了。 ????

目前的话,整个 HTTP 框架根本曾经具备我最后想要实现的全副性能了。也算是兑现了诺言,虎头蛇尾了。

性能具体的实现状况如下:

<img src=”https://img-blog.csdnimg.cn/20201021201230434.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70#pic_center” style=”zoom:50%;” />

很多读者小伙伴可能感觉我写的比拟容易。不过,说实话,我两头写的过程中也遇到了很多问题。为了解决写这个框架遇到的一些问题,我熬了很多夜,也早起了很屡次。

我不算是奋青。个别状况下,我平时都是早晨 9 点半之后玩几把王者光荣,到了 12 点左右就睡觉了。晚上的话,我个别都是 8 点左右起床。简直日日如此。

然而,写这个 HTTP 框架的时候,我记得有 3 次我熬夜到凌晨 2 点左右。有 2 个晚上,因为有“灵感”,我 5 点多久爬起来写代码了。

说这些,不是为了博同情让大家感觉我写的多辛苦,也不是体现我有多致力。

这些都是很平时的经验罢了!我感觉大部分程序员都经验过:

  • 夜深人静的时候,忽然本人写的代码出了点问题,不解决就不想睡觉。
  • 某个晚上,忽然惊醒,灵感爆棚,关上电脑开始写代码。

不过,我是真的不举荐大家熬夜!那我本人来说,每次熬夜就会导致我第二天甚至是第三天精神不振,重大影响效率。这还只是熬夜的短期影响,长期作息不衰弱的话,必定对身材的残害特地大。

情理都懂,不过,大部分都像我一样,还是会偶然熬夜。

02

整个框架的目录构造如下:

  • 框架实现局部依照不同的功能模块进行组织,比拟直观。
  • 提供了残缺的框架应用示例,并且还为其编写了测试。

<img src=”https://img-blog.csdnimg.cn/20201022084612423.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70#pic_center” style=”zoom:50%;” />

03

开源的魅力在于他人能够对你的我的项目进行反馈,并且,遇到对你的我的项目感兴趣的敌人,他们还会帮你一起欠缺和开发我的项目。

拿 jsoncat 来说。jsoncat 开源之后,一位叫做“hellohello-tom”的老哥便参加了进来帮忙开发。

tom 哥代码写的很不错,帮忙 jsoncat 实现了很多性能!真的十分十分非常感谢!爱你哦!老哥!

我俩因为这个我的项目常常在微信上交换,或者这就是编程的魅力吧!哈哈哈!

我平时少在微信聊天的,然而因为这个开源我的项目和老哥聊了挺多的。

轻易截了两张图:

我感觉一个我的项目开发是比拟禁忌只有本人一个人的。每个人都会有思维局限,你很难发现你的代码须要某些改良的中央以及存在的问题。

这也解释了为什么 Code Review(代码审查)在软件开发过程中这么重要了。

通过 Code Review 能够十分无效进步代码的整体品质,因为它会帮忙咱们发现代码中的坏滋味以及可能存在问题的中央。

04

其实,单纯实现性能的话费不了太多工夫。大部分工夫,我都花在了对现有代码的重构上。

毕竟我这个 HTTP 框架开源进去的次要目标之一是为了给须要的小伙伴学学习,我必须要保障我写的代码可读性。​

为此,我在写代码的过程中给本人定了以下准则:

  1. 所有从简 :能用起码的代码 写分明 的性能就肯定不多用一行代码。
  2. 不滥用设计模式:我最后写代码的时候,特地喜爱滥用设计模式。本人学到了什么设计模式,就像立马用到本人的我的项目下来,即便这个设计模式在以后业务场景并不适宜。这真的是一个不好的习惯,不过,在写这个 HTTP 框架的时候我刻意防止了这个问题。目前的话,整个框架只用到了单例模式、工厂模式、策略模式以及责任链模式。
  3. 放弃代码构造清晰 : 开源进去的代码是写给人看的,代码构造清晰能够大大减少其他人了解代码的难度。
  4. 审慎抽取工具类:最开始写这个框架的时候,我抽了很多工具类。到最初发现很多工具类中的办法,理论只在某一个中央用到,并且当前也只可能会在这一个中央用到。这个时候,我感觉最好的做法就是,将这些工具类办法放到惟一一个用到这个办法的类中。这样整体代码构造会更加清晰。
  5. 不秀技:最开始写代码的时候,特地喜爱秀技。比如说 Java8 那会还没风行的时候,我写代码总想着用 Java 8 的 Lambda 表达式、函数式接口等新个性。那时候,和老师一起做我的项目的时候,其他同学还会感觉我写的特地牛逼,因为他们感觉本人很久才能看懂。然而,我当初感觉过后的做法其实有别软件开发 / 编程的实质,编程的实质不是说缩小代码量,而是说写出别人易于了解的代码,写出更容易保护的零碎。你写的代码不单纯是给你本人看的,你还要让他人看懂,缩小他人的浏览学习老本。这个和我第一点说的所有从简是不矛盾的。

明天就简略聊聊这些吧!工夫也不早了!

我的开源我的项目举荐

  1. JavaGuide:「Java 学习 + 面试指南」一份涵盖大部分 Java 程序员所须要把握的外围常识。筹备 Java 面试,首选 JavaGuide!
  2. guide-rpc-framework:A custom RPC framework implemented by Netty+Kyro+Zookeeper.(一款基于 Netty+Kyro+Zookeeper 实现的自定义 RPC 框架 - 附具体实现过程和相干教程)
  3. jsoncat:仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架
  4. programmer-advancement:程序员应该有的一些好习惯 + 面试必知事项!
  5. springboot-guide:Not only Spring Boot but also important knowledge of Spring(不只是 SpringBoot 还有 Spring 重要知识点)
  6. awesome-java:Collection of awesome Java project on Github(Github 上十分棒的 Java 开源我的项目汇合).

我是 Guide 哥,一 Java 后端开发,会一点前端,自在的少年。咱们下期再见!微信搜“JavaGuide”回复“面试突击”支付我整顿的 4 本原创 PDF

退出移动版