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