国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 30個類手寫Spring核心原理之環境準備

30個類手寫Spring核心原理之環境準備

2021-12-14 21:53Tom彈架構 Java教程

首先需要安裝IntelliJ IDEA中的Lombok插件,打開IntelliJ IDEA后單擊菜單欄中的File→Settings(如下圖所示),或者使用快捷鍵Ctrl+Alt+S進入設置界面。

30個類手寫Spring核心原理之環境準備

1 IDEA集成Lombok插件

1.1 安裝插件

IntelliJ IDEA是一款非常優秀的集成開發工具,功能強大,而且插件眾多。Lombok是開源的代碼生成庫,是一款非常實用的小工具,我們在編輯實體類時可以通過Lombok注解減少getter、setter等方法的編寫,在更改實體類時只需要修改屬性即可,減少了很多重復代碼的編寫工作。首先需要安裝IntelliJ IDEA中的Lombok插件,打開IntelliJ IDEA后單擊菜單欄中的File→Settings(如下圖所示),或者使用快捷鍵Ctrl+Alt+S進入設置界面。

30個類手寫Spring核心原理之環境準備

單擊設置界面中的Plugins進行插件的安裝,在右側單擊Browse repositories按鈕,如下圖所示。

30個類手寫Spring核心原理之環境準備

然后在搜索界面中輸入lombok可以查詢到下方的Lombok Plugin,單擊Lombok Plugin可在右側看到Install按鈕,單擊該按鈕便可開始安裝,如下圖所示。

30個類手寫Spring核心原理之環境準備

我們在如下安裝界面可以看到Lombok支持的所有注解。

30個類手寫Spring核心原理之環境準備

在安裝過程中有Downloading Plugins的提示,安裝過程中進度條會變化。需要提醒的是,在安裝過程中一定要保證網絡連接可用且良好,否則可能會安裝失敗。安裝成功后可以看到下圖右側的Restart IntelliJ IDEA按鈕,此時可先不操作,因為還有后續的配置工作。

30個類手寫Spring核心原理之環境準備

回到Plugins,此時在下圖右側可以搜索到Lombok(而安裝前搜索不到)。

30個類手寫Spring核心原理之環境準備

1.2 配置注解處理器

在如下設置界面單擊Build, Execution, Deployment→Compiler→Annotation Processors,然后在右側勾選Enable annotation processing復選項即可。

30個類手寫Spring核心原理之環境準備

1.3 使用插件

使用前需要說明的是,安裝的插件只是一個調用,就像我們使用maven插件一樣,本機需要安裝maven才行。我們在使用Lombok前也需要在pom.xml文件中添加Lombok的依賴。

  1. #托管的類掃描包路徑#
  2. org.projectlombok
  3. lombok
  4. 1.16.10

接下來編輯一個Config測試類,添加兩個屬性,最后在類上添加@Data屬性,這個注解可以幫我們在.class文件中生成類中所有屬性的get/set、equals、canEqual、hashCode、toString方法等,如下圖所示。

30個類手寫Spring核心原理之環境準備

我們還可以通過下面的方式查看Lombok生成的方法。在菜單欄中單擊View→Tool Windows→Structure,便可以看到類中所有的方法,這些都是Lombok自動生成的,如下面兩圖所示。

30個類手寫Spring核心原理之環境準備

30個類手寫Spring核心原理之環境準備

2 從Servlet到ApplicationContext

在“用300行代碼手寫提煉Spring核心原理”一章中,我們已經了解Spring MVC的入口是DispatcherSerlvet,并實現了DispatcherServlet的init()方法,在init()方法中完成了IoC容器的初始化。而在使用Spring的過程中,見得最多的是ApplicationContext,似乎Spring托管的所有實例Bean都可以通過調用getBean()方法來獲得。那么ApplicationContext又是從何而來的呢?從Spring源碼中可以看到,DispatcherServlet的類圖如下圖所示。

30個類手寫Spring核心原理之環境準備

DispatcherServlet繼承了FrameworkServlet,FrameworkServlet繼承了HttpServletBean,HttpServletBean繼承了HttpServlet。在HttpServletBean的init()方法中調用了FrameworkServlet的initServletBean()方法,在initServletBean()方法中初始化WebApplicationContext實例。在initServletBean()方法中調用了DispatcherServlet重寫的onRefresh()方法。在DispatcherServlet的onRefresh()方法中又調用了initStrategies()方法,初始化Spring MVC的九大組件。其實,通過上面復雜的調用關系可以得出一個結論:在Servlet的init()方法中初始化了IoC容器和Spring MVC所依賴的九大組件。在手寫之前先將框架類關系畫出來,如下圖所示,順便也回顧一下我們之前講過的IoC容器結構。

30個類手寫Spring核心原理之環境準備

3 準備基礎配置

在開始手寫之前我們先做一個約定,所有的手寫類都以GP開頭,以區別于Spring框架中的原生類,方便對比理解。如DispatcherServlet在這個Mini版本中會命名為GPDispatcherServlet,所有的方法名盡量和原生Spring保持一致,可能有些參數列表會做一些微調,主要目的是理解設計思路。

3.1 application.properties配置

還是先從application.properties文件開始,用application.properties來代替application.xml,具體配置如下:

  1. #托管的類掃描包路徑#
  2. scanPackage=com.gupaoedu.vip.spring.demo

3.2 pom.xml配置

接下來看pom.xml的配置,主要關注jar包依賴:

  1. -- dependency versions -->
  2. 2.4
  3. -- requied start -->
  4. javax.servlet
  5. servlet-api
  6. ${servlet.api.version}
  7. provided
  8. -- requied end -->
  9. org.projectlombok
  10. lombok
  11. 1.16.10
  12. org.slf4j
  13. slf4j-api
  14. 1.7.25
  15. ch.qos.logback
  16. logback-classic
  17. 1.2.3

3.3 web.xml配置

web.xml配置如下:

  1. "1.0" encoding="UTF-8"?>
  2. "http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:javaee="http://java.sun.com/xml/ns/javaee"
  4. xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
  5. xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
  6. version="2.4">
  7. name>Gupao Spring Applicationname>
  8. name>gupaomvcname>
  9. com.gupaoedu.vip.spring.formework.webmvc.servlet.GPDispatcherServlet
  10. name>contextConfigLocationname>
  11. classpath:application.properties
  12. <load-on-startup>1load-on-startup>
  13. name>gupaomvcname>
  14. /*

3.4 GPDispatcherServlet

GPDispatcherServlet代碼如下:

  1. package com.gupaoedu.vip.spring.formework.webmvc.servlet;
  2. import javax.servlet.ServletConfig;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. import java.io.IOException;
  8. //Servlet只是作為一個MVC的啟動入口
  9. public class GPDispatcherServlet extends HttpServlet {
  10. @Override
  11. public void init(ServletConfig config) throws ServletException {
  12. }
  13. @Override
  14. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  15. this.doPost(req,resp);
  16. }
  17. @Override
  18. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
  19. }
  20. }

用30個類手寫一個Spring的準備階段就到此為止,大家一定要記得自己動手操作。光看不練假把式。

原文鏈接:https://mp.weixin.qq.com/s/WOzTg08UktFszXHbsV2hJQ

延伸 · 閱讀

精彩推薦
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7482021-02-04
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 欧美亚洲国产日韩 | 国产精品精品久久久 | 亚洲中字幕 | 国产黄色a级| 中文字幕免费观看 | 在线视频自拍 | 在线激情网站 | 国产精品亚洲一区二区三区在线 | 在线观看av网站永久 | 四虎影院在线 | 伊人网站 | 久久999| 午夜影院免费 | 亚洲综合社区 | 久草视频在线播放 | 91香蕉 | 黄色美女视频网站 | 亚洲成人三级 | 国产福利91精品一区二区 | 亚洲视频一区二区三区 | 成人一区二区在线 | 伊人伊人网 | 亚洲性生活免费视频 | 成人av一区二区亚洲精 | 欧美日韩久久久 | 亚洲欧美制服诱惑 | 国产精品五区 | jdav视频在线观看免费 | 精品国产鲁一鲁一区二区在线观看 | 欧美一级在线视频 | 亚洲国产精品99久久久久久久久 | 91久久久久久久 | 99久久久无码国产精品 | 精品久久久久久久久久 | 在线免费观看毛片 | 成人av在线播放 | 欧美日本国产 | 亚洲精品一区二区三区四区高清 | 精品一区av| 日韩免费在线 |