從零開始實現一個簡易的Java MVC框架

前言

最近在看spring-boot框架的源碼,看了源碼以後更是讓我感覺到了spring-boot功能的強大。並且使用了不少的設計模式,讓人在看的時候以爲有點難如下手。java

不過仔細瞭解了一段時候發現,其實他的原理是很簡單的,因此想要本身也動手實現一個功能相似的框架。一方面可讓本身在細節部分了解更深刻,另外一方面也能夠給其餘和我同樣想要了解spring-boot原理,可是卻被他複雜的設計模式嚇到的人提供一些參考。git

固然本身動手確實很難作到和spring-boot那樣強大的功能,並且也爲了不過於使用設計模式而形成代碼變得繁雜,我簡化了不少過程和功能,使得主要的實現思想更容易獲得理解。github

本文會一步步講解這個框架的實現過程,同時也會說起一些spring中經典的代碼或者問題。spring

框架代碼已經完成,若是不想看文章的話能夠直接看個人項目代碼,GitHub: doodle

主要實現功能:設計模式

  • Bean容器
  • IOC
  • AOP
  • MVC

目錄

框架成果

咱們直接看一下完成以後的效果吧。tomcat

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<User> 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<User> 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<String> deleteUser(@RequestParam(value = "id") long id) {
        userService.deleteUser(id);
        return new Result<>("success", 0, "");
    }
}

看UserController這個類不知道的覺得這是一個spring-boot項目,可是這個確實沒有引用spring,而是本身實現的框架。再經過咱們的starter就能夠啓動內置的tomcat的服務器,訪問咱們的網站了。這一切都和spring-boot類似服務器

package com.sample;
import ...

public class App {
    public static void main(String[] args) {
        Doodle.run(App.class);
    }
}

接下來幾篇就會講解這個框架是如何實現的。app

結語

本項目不只參考了spring-boot,同時還參考了:框架

這些都是國人寫的更輕量並且也很優秀的框架,相比spring-boot來講閱讀源碼的難度會小一些。感謝這些框架給我提供學習的思路,同時給咱們更多的選擇。jsp


原文地址:從零開始實現一個簡易的Java MVC框架

相關文章
相關標籤/搜索