最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

手把手教你寫一個(gè)spring IOC容器的方法

 更新時(shí)間:2021年04月12日 11:16:51   作者:華為云  
這篇文章主要介紹了手把手教你寫一個(gè)spring IOC容器的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

本文分享自華為云社區(qū)《手把手教你寫一個(gè)spring IOC容器》,原文作者:技術(shù)火炬手。

spring框架的基礎(chǔ)核心和起點(diǎn)毫無(wú)疑問就是IOC,IOC作為spring容器提供的核心技術(shù),成功完成了依賴的反轉(zhuǎn):從主類的對(duì)依賴的主動(dòng)管理反轉(zhuǎn)為了spring容器對(duì)依賴的全局控制。今天就帶大家手寫一個(gè)spring IOC容器。

第0步(準(zhǔn)備工作):

(1)JDK1.8及java環(huán)境變量
(2)maven包及maven環(huán)境變量
(3)idea

第1步(創(chuàng)建項(xiàng)目,引入tomcat包)

PS:由于該項(xiàng)目的作用是模擬spring的部分功能,所以取名為spring

(1)創(chuàng)建好的項(xiàng)目?jī)?nèi)容如下圖:

(2)pom文件的初始狀態(tài)如下:

第2步:搭建主體框架

PS:一個(gè)正常的spring項(xiàng)目一般分為controller和service部分,此處暫時(shí)忽略數(shù)據(jù)庫(kù)鏈接

(1)其中,TestController實(shí)現(xiàn)功能,返回name+“Hello World!”,引用TestService

(2)而TestService和TestServiceImpl則分別實(shí)現(xiàn)功能

第3步:創(chuàng)建,并打上標(biāo)簽

PS:我們需要很多標(biāo)簽,如service,controller,還有autowired等

(1)創(chuàng)建各種標(biāo)簽(暫時(shí)創(chuàng)建這些標(biāo)簽,后面不夠再加)

(2)打上標(biāo)簽

由于RequestMpping后面需要跟路徑,所以此處需要重寫其value()方法,如下:

第4步:進(jìn)入正題,創(chuàng)建一個(gè)DisPatcherServlet類,用于實(shí)現(xiàn)IOC容器功能

(1)DisPatcherServlet繼承HttpServlet(注意添加依賴),并重寫doGet,doPost方法

(2)創(chuàng)建一個(gè)doDispatcher方法,并被doPost引用

第5步:初始化

(1)暫停實(shí)現(xiàn)doDispatcher,去重寫初始化方法init,初始化共分為五大步驟,如下

注意:頂端要加上屬性類(Properties),且要resource中加application.properties,并加上scanPackage屬性,內(nèi)容為需掃描的根目錄

(2)加載配置文件實(shí)現(xiàn),需要先配置一個(gè)web.xml,路徑和內(nèi)容如下:

路徑:

內(nèi)容:

剩下的內(nèi)容,大家應(yīng)該能看懂的吧

(3)下一步,使用遞歸,將所有class的路徑存入一個(gè)集合(classPaths)里面

(4)下一步,將打上了controller和service標(biāo)簽的類放入ioc容器中

(5)下一步,注入(通過Autowired標(biāo)簽從IOC容器中獲取實(shí)例對(duì)象并賦值)

(6)獲取所有的RequestMapping內(nèi)容,并寫到一個(gè)對(duì)象集合中

第6步:回頭實(shí)現(xiàn)doDisPatcher的步驟

(1)首先,設(shè)定404(class notfound)
(2)后面一半,實(shí)現(xiàn)接口功能
PS1:判斷url方法
PS2:根據(jù)url獲取方法
PS3:獲取方法下的所有參數(shù)

最后一步:執(zhí)行tomcat

so,

(1)你以為以上的內(nèi)容是對(duì)的嘛?
(2)你以為你能得到想要的結(jié)果嗎?

太天真了?。?!

如果你按照我說的方法去運(yùn)行,恭喜你,得到的結(jié)果是not found?。?!真正的挑戰(zhàn)才剛剛開始:

第一,標(biāo)簽類的定義,如下,特別重要的是Target

還需要補(bǔ)充一個(gè)mapping

第二,TestController類中,RequestParam少了value屬性,如果沒有,則無(wú)法傳值。

第三,那么參數(shù)初始化,是不是也有一點(diǎn)問題呢?注意這段代碼,傳參的名字應(yīng)該和什么相關(guān)?

好了 現(xiàn)在真的可以成功了~~~

看看結(jié)果吧。

完結(jié)撒花~~~

到此這篇關(guān)于手把手教你寫一個(gè)spring IOC容器的文章就介紹到這了,更多相關(guān)spring IOC容器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Java中@SuppressWarnings的正確使用方法

    關(guān)于Java中@SuppressWarnings的正確使用方法

    這篇文章主要介紹了關(guān)于Java中@SuppressWarnings的正確使用方法,@SuppressWarnings注解主要用在取消一些編譯器產(chǎn)生的警告對(duì)代碼左側(cè)行列的遮擋,有時(shí)候這會(huì)擋住我們斷點(diǎn)調(diào)試時(shí)打的斷點(diǎn),需要的朋友可以參考下
    2023-05-05
  • 詳解Java語(yǔ)言中的抽象類與繼承

    詳解Java語(yǔ)言中的抽象類與繼承

    這篇文章主要為大家詳細(xì)介紹了Java語(yǔ)言中的抽象類與繼承的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴快跟隨小編一起了解一下
    2022-10-10
  • Spring?Boot?RestController接口輸出到終端的操作代碼

    Spring?Boot?RestController接口輸出到終端的操作代碼

    這篇文章主要介紹了Spring?Boot?RestController接口如何輸出到終端,使用?HttpServletResponse?類,可以在使用curl執(zhí)行?Spring?Boot?REST接口的同時(shí),在控制臺(tái)輸出一些信息,給運(yùn)維人員知道當(dāng)前命令執(zhí)行的狀態(tài),感興趣的朋友跟隨小編一起看看吧
    2023-09-09
  • java中List常用的4種stream()方法解析

    java中List常用的4種stream()方法解析

    Java中的List接口從Java 8開始新增了stream()方法,用于創(chuàng)建一個(gè)Stream流對(duì)象,這篇文章主要給大家介紹了關(guān)于java中List常用的4種stream()方法的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • java eclipse 整個(gè)項(xiàng)目或包查找只定字符串并替換操作

    java eclipse 整個(gè)項(xiàng)目或包查找只定字符串并替換操作

    這篇文章主要介紹了java eclipse 整個(gè)項(xiàng)目或包查找只定字符串并替換操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-09-09
  • Spring Cloud Feign接口返回流的實(shí)現(xiàn)

    Spring Cloud Feign接口返回流的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud Feign接口返回流的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 一步步教你把SpringBoot項(xiàng)目打包成Docker鏡像

    一步步教你把SpringBoot項(xiàng)目打包成Docker鏡像

    Docker可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化,下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目打包成Docker鏡像的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Log4net 日志記錄詳細(xì)介紹及應(yīng)用

    Log4net 日志記錄詳細(xì)介紹及應(yīng)用

    這篇文章主要介紹了Log4net 日志記錄詳細(xì)介紹及應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java使用gzip實(shí)現(xiàn)文件解壓縮示例

    java使用gzip實(shí)現(xiàn)文件解壓縮示例

    這篇文章主要介紹了java使用gzip實(shí)現(xiàn)文件解壓縮示例,需要的朋友可以參考下
    2014-03-03
  • Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn)

    Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn)

    這篇文章主要為大家詳細(xì)介紹了Java編寫網(wǎng)絡(luò)聊天程序?qū)嶒?yàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評(píng)論

湖南省| 徐汇区| 胶南市| 开封市| 平定县| 河池市| 蓝田县| 金门县| 五家渠市| 永兴县| 读书| 紫金县| 南郑县| 盘山县| 郎溪县| 靖西县| 泾川县| 天峻县| 杭锦后旗| 嘉兴市| 南平市| 崇仁县| 晋宁县| 元朗区| 崇礼县| 喀什市| 巴中市| 临沧市| 堆龙德庆县| 高平市| 石嘴山市| 昂仁县| 洱源县| 临澧县| 如东县| 本溪| 富顺县| 四会市| 乡宁县| 湟源县| 博爱县|