jsoncat: https://github.com/Snailclimb/jsoncat (About
仿 Spring Boot 但不一样于 Spring Boot 的一个轻量级的 HTTP 框架)
边看英雄联盟比赛,边和小伙伴们简单聊聊简易版的“Spring Boot”的近况吧!JDG 冲冲冲!!!前端
全文内容不会不少,由于不会详细介绍实现过程,你们节假日确定也不想看。后面会详细写文章分享本身的实现过程好比 Spring MVC、IoC 模块究竟是咋实现的(最简化原则实现,能用最少的代码就用最少的代码。便于维护,便于学习)。java
9.29号的晚上,我已经在老家了。git
晚上和女票还有妹妹一块儿开黑打完游戏以后,已经到了快11点。有点睡不着,心里躁动,就把 HTTP 框架的 IoC 的基本功能给实现了。github
次日,我又抽出了一些时间,对其进行了优化和重构。面试
目前不光支持 @Autowired
(注入对象) 和 @Component
(声明对象被 IoC 容器管理),还支持 @Qualifier
(指定注入的bean)。json
简单给你们看一下效果!后端
声明一个接口:SmsService.java
微信
public interface SmsService { String send(SmsDto smsDto); }
实现类1:AliSmsServiceImpl.java
app
@Component(name = "aliSmsServiceImpl") public class AliSmsServiceImpl implements SmsService { @Override public String send(SmsDto smsDto) { System.out.println("send message to " + smsDto.getPhone()); return AliSmsServiceImpl.class.getSimpleName(); } }
实现类2:QiNiuSmsServiceImpl.java
框架
@Component(name = "qiNiuSmsServiceImpl") public class QiNiuSmsServiceImpl implements SmsService { @Override public String send(SmsDto smsDto) { System.out.println("send message to " + smsDto.getPhone()); return QiNiuSmsServiceImpl.class.getSimpleName(); } }
post请求传输类:SmsDto.java
@Data @AllArgsConstructor @NoArgsConstructor public class SmsDto { private String phone; }
controller: SmsController.java
@RestController("/sms") public class SmsController { @Autowired @Qualifier("aliSmsServiceImpl") private SmsService smsService; @PostMapping("/send") public String send(@RequestBody SmsDto smsDto) { return smsService.send(smsDto); } }
使用 post 请求调用 /sms/send
接口
截止目前,我已经把 Spring MVC 相关经常使用的注解好比 @GetMapping
、@PostMapping
、@PathVariable
以及 IoC 相关的注解好比 @Autowired
、@Component
、@Qualifier
实现了。
后续,会开始实现 AOP 相关的功能。
另外,为了方便小伙伴们学习。我今天下午又把包结构进行了重构,而且完善了一下注释。
包结构方面的重构,主要就是将 Spring MVC 和 IoC 的核心实现类提到了一个包下面。这样,小伙伴们想要看某一个功能模块的具体实现的话,就比较方便了。
这几天,除了10.1号和10.2号没有写代码以外,我花了大量时间重构代码。
我花在重构代码的时间常常比实现功能的时间花的更多。这实际上是挺正常的!重构代码的是编码过程当中必不可少的环节,千万不要以为本身的代码写了以后就不须要重构了!
另外,为了给重构代码提升保障,我不得不写了一些测试。经过测试保障,确实为我节省了不少时间,也让我更敢进行重构。
我是 Guide 哥,一 Java 后端开发,会一点前端,自由的少年。咱们下期再见!微信搜“JavaGuide”回复“面试突击”领取我整理的 4 本原创PDF