ゼロから簡単な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コードの最適化
  • フレームワークの成果
    完成した後の効果を直接見てみましょう.
    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だけでなく、次のものも参照しています.
  • blade
  • latke
  • smart-framework

  • これらはすべて中国人が書くより軽くて優秀なフレームワークで、spring-bootに比べてソースコードを読むのは難しいです.これらのフレームワークが私に学習の構想を提供してくれて、同時に私たちにもっと多くの選択を与えてくれたことに感謝します.
    原文アドレス:ゼロから簡易Java MVCフレームワークを実現