国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架

neuSnail / 1924人閱讀

摘要:不過仔細(xì)了解了一段時候發(fā)現(xiàn),其實(shí)他的原理是很簡單的,所以想要自己也動手實(shí)現(xiàn)一個功能類似的框架。原文地址從零開始實(shí)現(xiàn)一個簡易的框架

前言

最近在看spring-boot框架的源碼,看了源碼之后更是讓我感受到了spring-boot功能的強(qiáng)大。而且使用了很多的設(shè)計模式,讓人在看的時候覺得有點(diǎn)難以下手。

不過仔細(xì)了解了一段時候發(fā)現(xiàn),其實(shí)他的原理是很簡單的,所以想要自己也動手實(shí)現(xiàn)一個功能類似的框架。一方面可以讓自己在細(xì)節(jié)部分了解更深入,另一方面也可以給其他和我一樣想要了解spring-boot原理,但是卻被他復(fù)雜的設(shè)計模式嚇到的人提供一些參考。

當(dāng)然自己動手確實(shí)很難做到和spring-boot那樣強(qiáng)大的功能,而且也為了避免過于使用設(shè)計模式而造成代碼變得繁雜,我簡化了很多過程和功能,使得主要的實(shí)現(xiàn)思想更容易得到理解。

本文會一步步講解這個框架的實(shí)現(xiàn)過程,同時也會提及一些spring中經(jīng)典的代碼或者問題。

框架代碼已經(jīng)完成,如果不想看文章的話可以直接看我的項(xiàng)目代碼,GitHub:doodle

主要實(shí)現(xiàn)功能:

Bean容器

IOC

AOP

MVC

目錄

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(一)--前言

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(二)--實(shí)現(xiàn)Bean容器

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(三)--實(shí)現(xiàn)IOC

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(四)--實(shí)現(xiàn)AOP

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(五)--引入aspectj實(shí)現(xiàn)AOP切點(diǎn)

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(六)--加強(qiáng)AOP功能

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(七)--實(shí)現(xiàn)MVC

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(八)--制作Starter

從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(九)--優(yōu)化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項(xiàng)目,但是這個確實(shí)沒有引用spring,而是自己實(shí)現(xiàn)的框架。再通過我們的starter就可以啟動內(nèi)置的tomcat的服務(wù)器,訪問我們的網(wǎng)站了。這一切都和spring-boot相似

package com.sample;
import ...

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

接下來幾篇就會講解這個框架是如何實(shí)現(xiàn)的。

結(jié)語

本項(xiàng)目不僅參考了spring-boot,同時還參考了:

blade

latke

smart-framework

這些都是國人寫的更輕量而且也很優(yōu)秀的框架,相比spring-boot來說閱讀源碼的難度會小一些。感謝這些框架給我提供學(xué)習(xí)的思路,同時給我們更多的選擇。

原文地址:從零開始實(shí)現(xiàn)一個簡易的Java MVC框架

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71460.html

相關(guān)文章

  • 從零開始實(shí)現(xiàn)一個簡易Java MVC框架(五)--引入aspectj實(shí)現(xiàn)AOP切點(diǎn)

    摘要:接下來就可以把這個切點(diǎn)類加入到我們之前實(shí)現(xiàn)的功能中了。實(shí)現(xiàn)的切點(diǎn)功能首先改裝注解,把之前改成來存儲表達(dá)式。測試用例在上一篇文章從零開始實(shí)現(xiàn)一個簡易的框架四實(shí)現(xiàn)中的測試用例的基礎(chǔ)上修改測試用例。 前言 在上一節(jié)從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(四)--實(shí)現(xiàn)AOP中我們實(shí)現(xiàn)了AOP的功能,已經(jīng)可以生成對應(yīng)的代理類了,但是對于代理對象的選擇只能通過指定的類,這樣確實(shí)不方便也不合理。...

    wupengyu 評論0 收藏0
  • 從零開始實(shí)現(xiàn)一個簡易Java MVC框架(八)--制作Starter

    摘要:服務(wù)器相關(guān)配置啟動類資源目錄目錄靜態(tài)文件目錄端口號目錄目錄實(shí)現(xiàn)內(nèi)嵌服務(wù)器在上一章文章從零開始實(shí)現(xiàn)一個簡易的框架七實(shí)現(xiàn)已經(jīng)在文件中引入了依賴,所以這里就不用引用了。 spring-boot的Starter 一個項(xiàng)目總是要有一個啟動的地方,當(dāng)項(xiàng)目部署在tomcat中的時候,經(jīng)常就會用tomcat的startup.sh(startup.bat)的啟動腳本來啟動web項(xiàng)目 而在spring-b...

    AprilJ 評論0 收藏0
  • 從零開始實(shí)現(xiàn)一個簡易Java MVC框架(六)--加強(qiáng)AOP功能

    摘要:在前面的文章中實(shí)現(xiàn)的功能時,目標(biāo)類都只能被一個切面代理,如果想要生成第二個代理類,就會把之前的代理類覆蓋。改裝原有功能現(xiàn)在要改裝原來的的實(shí)現(xiàn)代碼,讓的功能加入到框架中為了讓切面能夠排序,先添加一個注解,用于標(biāo)記排序。 前言 在前面從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(四)--實(shí)現(xiàn)AOP和從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(五)--引入aspectj實(shí)現(xiàn)AOP切點(diǎn)這兩節(jié)文章...

    Loong_T 評論0 收藏0
  • 從零開始實(shí)現(xiàn)一個簡易Java MVC框架(九)--優(yōu)化MVC代碼

    摘要:前言在從零開始實(shí)現(xiàn)一個簡易的框架七實(shí)現(xiàn)中實(shí)現(xiàn)了框架的的功能,不過最后指出代碼的邏輯不是很好,在這一章節(jié)就將這一部分代碼進(jìn)行優(yōu)化。 前言 在從零開始實(shí)現(xiàn)一個簡易的Java MVC框架(七)--實(shí)現(xiàn)MVC中實(shí)現(xiàn)了doodle框架的MVC的功能,不過最后指出代碼的邏輯不是很好,在這一章節(jié)就將這一部分代碼進(jìn)行優(yōu)化。 優(yōu)化的目標(biāo)是1.去除DispatcherServlet請求分發(fā)器中的http邏...

    ruicbAndroid 評論0 收藏0
  • 從零開始實(shí)現(xiàn)一個簡易Java MVC框架(二)--實(shí)現(xiàn)Bean容器

    摘要:容器實(shí)際上就是存放所有的地方,即以及相關(guān)信息對應(yīng)其實(shí)體的容器,為什么稱之為呢,因?yàn)樵谥校x信息和實(shí)例的東西叫。了解到這個以后接下來就可以開始編寫容器了,在包下創(chuàng)建一個類叫。獲取容器實(shí)例至此,這個容器就完成了。 項(xiàng)目準(zhǔn)備 首先確保你擁有以下環(huán)境或者工具 idea java 8 maven 3.3.X lombok插件 然后我們創(chuàng)建一個maven工程,編寫pom.xml引入一些需要的...

    paulquei 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<