ゼロから簡単なJava MVCフレームワークを実現
5531 ワード
前言
最近spring-bootフレームワークのソースコードを見て、ソースコードを見てspring-boot機能の強さを感じました.しかもたくさんのデザインが使われていて、見ているうちにちょっと手がつけられないような気がします.
しかし、よく知ってみると、実は彼の原理は簡単なので、自分でも機能的なフレームワークを実現したいと思っています.細部についてもっと深く理解できる一方で、spring-bootの原理を私と同じように知りたいが、彼の複雑な設計モデルに驚いた人に参考を提供することもできます.
もちろん自分でやるのは確かにspring-bootのような強力な機能を実現するのは難しいし、設計モードを使いすぎてコードが煩雑になるのを避けるために、私は多くの過程と機能を簡素化し、主な実現思想を理解しやすいようにした.
このフレームワークの実装手順を一歩一歩説明するとともに、springの古典的なコードや問題にも言及します.
フレームワークコードが完成しました.文章を見たくなければ、私のプロジェクトコードを直接見てもいいです.GitHub:doodle
主な実現機能: Bean容器 IOC AOP MVC
目次ゼロから簡単なJava MVCフレームワークを実現(一)--前言 ゼロから簡単なJava MVCフレームワークを実現する(二)--Beanコンテナ を実現するゼロから簡単なJava MVCフレームワークを実現(3)--IOC を実現ゼロから簡単なJava MVCフレームワークを実現(4)--AOP を実現ゼロから簡単なJava MVCフレームワークを実現する(5)--aspectjを導入してAOP接点 を実現するゼロから簡単なJava MVCフレームワークを実現する(6)--AOP機能を強化する ゼロから簡単なJava MVCフレームワークを実現(7)--MVC を実現ゼロから簡単なJava MVCフレームワークを実現(8)--Starter を作成ゼロから簡単なJava MVCフレームワークを実現する(9)--MVCコードの最適化 フレームワークの成果
完成した後の効果を直接見てみましょう.
UserControllerというクラスを見て知らないのはspring-bootプロジェクトだと思っていますが、これは確かにspringを引用していないので、自分で実現したフレームワークです.さらにstarterを介してtomcatを内蔵したサーバを起動し、Webサイトにアクセスできます.すべてspring-bootに似ています
次のいくつかの編では、このフレームワークがどのように実現されているかを説明します.
締めくくり
このプロジェクトはspring-bootだけでなく、次のものも参照しています. blade latke smart-framework
これらはすべて中国人が書くより軽くて優秀なフレームワークで、spring-bootに比べてソースコードを読むのは難しいです.これらのフレームワークが私に学習の構想を提供してくれて、同時に私たちにもっと多くの選択を与えてくれたことに感謝します.
原文アドレス:ゼロから簡易Java MVCフレームワークを実現
最近spring-bootフレームワークのソースコードを見て、ソースコードを見てspring-boot機能の強さを感じました.しかもたくさんのデザインが使われていて、見ているうちにちょっと手がつけられないような気がします.
しかし、よく知ってみると、実は彼の原理は簡単なので、自分でも機能的なフレームワークを実現したいと思っています.細部についてもっと深く理解できる一方で、spring-bootの原理を私と同じように知りたいが、彼の複雑な設計モデルに驚いた人に参考を提供することもできます.
もちろん自分でやるのは確かにspring-bootのような強力な機能を実現するのは難しいし、設計モードを使いすぎてコードが煩雑になるのを避けるために、私は多くの過程と機能を簡素化し、主な実現思想を理解しやすいようにした.
このフレームワークの実装手順を一歩一歩説明するとともに、springの古典的なコードや問題にも言及します.
フレームワークコードが完成しました.文章を見たくなければ、私のプロジェクトコードを直接見てもいいです.GitHub:doodle
主な実現機能:
目次
完成した後の効果を直接見てみましょう.
package com.sample.controller;
import ...
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value = "/list", method = RequestMethod.GET)
public ModelAndView getUserList() {
List list = userService.getUser();
return new ModelAndView().setView("user_list.jsp").addObject("list", list);
}
@RequestMapping(value = "/detail", method = RequestMethod.GET)
public ModelAndView getUser(@RequestParam(value = "id") long id) {
User user = userService.getUserById(id);
return new ModelAndView().setView("user_detail.jsp").addObject("user", user);
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
@ResponseBody
public Result addUser(@RequestParam(value = "name") String name) {
User user = userService.addUser(name);
return new Result<>(user, 0, "");
}
@RequestMapping(value = "/delete", method = RequestMethod.POST)
@ResponseBody
public Result deleteUser(@RequestParam(value = "id") long id) {
userService.deleteUser(id);
return new Result<>("success", 0, "");
}
}
UserControllerというクラスを見て知らないのはspring-bootプロジェクトだと思っていますが、これは確かにspringを引用していないので、自分で実現したフレームワークです.さらにstarterを介してtomcatを内蔵したサーバを起動し、Webサイトにアクセスできます.すべてspring-bootに似ています
package com.sample;
import ...
public class App {
public static void main(String[] args) {
Doodle.run(App.class);
}
}
次のいくつかの編では、このフレームワークがどのように実現されているかを説明します.
締めくくり
このプロジェクトはspring-bootだけでなく、次のものも参照しています.
これらはすべて中国人が書くより軽くて優秀なフレームワークで、spring-bootに比べてソースコードを読むのは難しいです.これらのフレームワークが私に学習の構想を提供してくれて、同時に私たちにもっと多くの選択を与えてくれたことに感謝します.
原文アドレス:ゼロから簡易Java MVCフレームワークを実現