前沿
先附上项目地址: github - jsonboot
大概是去年七月开始,就有想写一个SpringBoot项目的念头,其一是为了能够更好了解SpringBoot的设计思想,提升自己的编码技术。其二是可以当作一个不错的个人项目,在找工作时也有底气在面试官面前…咳咳…懂得都懂。奈何当时事务缠身,计划一直搁浅到现在,才抽出空闲时间来完成这个目标。
在网上找了很多关于SpringBoot的搭建教程,但总是没有能符合心意的项目,后来在guide哥的公众号内找到了guide哥搭建的SpringBoot项目,我就以这个项目为蓝本,跟着guide哥的commit完成这个项目,期间按照自己的想法修改了一些内容,如Maven配置,IOC容器的实现,解决AOP-循环依赖的方式等。
项目做到最后自己也不敢相信,自己就零零散散的将这个项目大致完成了,虽然还有很多不足,也不能跟guide哥的原项目相比,但总归是一件比较有成就感的事!不仅收获了项目,还得到了知识,何乐而不为!
项目简介
项目以Maven为基础,使用Netty来实现Http服务器,实现了原SpringBoot的大部分功能注解,使用Json作为数据返回的格式。
项目会从最基础的搭建Maven依赖,实现Netty服务器,实现SpringMVC…等等一步一步的展现,等大部分的功能实现后,剩下的功能其实都可以在已有的基础上添加,照葫芦画瓢即可。
为了更加清晰可辨,在完成项目时我特意将不同的功能实现写在不同的Branch中,文章也会随着Branch进行循序渐进。
大兄弟们在搭建项目时也可以Clone一下代码,Checkout到特定的分支,每行代码基本都有详细的注释解释。相信以各位大兄弟的聪明才智,即使不看文章,也能清晰弄懂逻辑。
- annotation —— 注解包,存放Spring、SpringMVC等相关注解
- common —— 一些公共文件包,如打印等banner
- constant —— 常量文件包
- core —— 核心代码包,内涵IOC、AOP、SpringMVC等的具体实现
- entity —— 对象实体包
- exception —— 异常包,定义在项目运行过程中可能出现的异常
- serialize —— 序列化包,使用的是json序列化
- utils —— 工具类包,包括反射工具类等
- JsonBootApplication —— run启动类,相当于是SpringBoot的SpringBootApplication,内置run方法启动
整体分为demo包和jsonboot包![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/f250cf76a6544d9f01c8f0620a9102c3.png)
jsonboot的包的部分就是上述结构,demo包的结构就和平时使用的开发结构一致,当jsonboot是jar包导入直接用就行,就跟SpringBoot一样。后续推出的教程博客是想带着大家一起去完成这个项目,当然不是将所有代码贴上来哇!会介绍核心的思路,完整的代码还是得看github上的代码。
下一节:一起来写个SpringBoot[1] — — 使用Netty实现Http服务器