jsoncat:https://github.com/Snailclimb/jsoncat (About

仿 Spring Boot 但不同于 Spring Boot 的一个轻量级的 HTTP 框架)

边看英雄联盟比赛,边和小伙伴们简单聊聊简易版的“Spring Boot”的近况吧!JDG 冲冲冲!!!

全文内容不会很多,因为不会详细介绍实现过程,大家节假日肯定也不想看。后面会详细写文章分享自己的实现过程比如 Spring MVC、IoC 模块到底是咋实现的(最简化原则实现,能用最少的代码就用最少的代码。便于维护,便于学习)。

9.29号的晚上,我已经在老家了。

晚上和女票还有妹妹一起开黑打完游戏之后,已经到了快11点。有点睡不着,内心躁动,就把 HTTP 框架的 IoC 的基本功能给实现了。

第二天,我又抽出了一些时间,对其进行了优化和重构。

目前不光支持 @Autowired(注入对象) 和 @Component (声明对象被 IoC 容器管理),还支持 @Qualifier(指定注入的bean)。

简单给大家看一下效果!

声明一个接口:SmsService.java

public interface SmsService {
String send(SmsDto smsDto);
}

实现类1:AliSmsServiceImpl.java

@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

最新文章

  1. ubuntu下MySQL中文乱码(新版本Mysql修改方法)
  2. Javascript-URL帮助类
  3. Android 自定义View 三板斧之一——继承现有控件
  4. JQuery怎么实现页面刷新后保留鼠标点击样式的方法
  5. UVA 439 Knight Moves --DFS or BFS
  6. 关于PCB 3D 模型的快速导入方法
  7. TTL电平、CMOS电平、RS232电平的区别
  8. Android Studio ndk-Jni开发详细
  9. Java学习笔记:内部类/匿名内部类的全面介绍
  10. tmux tutorial
  11. Codeforces 691B s-palindrome
  12. Mysql 锁基础
  13. postfix配置&使用
  14. DB2常见错误信息
  15. WPF dev 获取gridControl筛选后的数据
  16. [2017BUAA软工]第零次作业
  17. Leetcode——300. 最长上升子序列
  18. hdu 4407 容斥原理
  19. Graph 卷积神经网络:概述、样例及最新进展
  20. Linux中Centos7下安装Mysql(更名为Mariadb)

热门文章

  1. PJSIP开发指南
  2. Android开发java开发之常用英文词汇汇总。程序员必备英语单词
  3. Application.LoadLevel
  4. 华为手机logcat中不显示log.e以下级别日志的解决方法
  5. Math Problem(数学)
  6. vue引入 lodash
  7. C015:十进制转8进制
  8. ubuntu nodejs+npm 前端环境部署
  9. Python爬虫学习第一记 (翻译小助手)
  10. Mybatis注解开发相关