日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

框架的本質(zhì)分析——Spring框架

 

誕生的背景

什么背景下誕生了該技術(shù)?

不論是哪個(gè)框架,不會(huì)平白無(wú)故誕生,不會(huì)平白無(wú)故地被人所追捧,了解其背景,追根溯源。

讓我們把時(shí)間撥回到2002年,當(dāng)時(shí)JAVAEE和EJB正大行其道。Spring的作者覺(jué)得其太重了,并不是所有人都需要EJB的功能,因此搞出了一套框架interface21,即Spring的前身。

思考1:Spring和EJB到底孰輕孰重?

回顧歷史,我們來(lái)看現(xiàn)在的Spring,實(shí)際上其生態(tài)已經(jīng)非常完善,也已經(jīng)變得非常重,但是我們可以選擇性地使用其特性,而且使用過(guò)程中我們對(duì)其感知稍弱。

那么EJB呢,為什么Rod Johnson會(huì)覺(jué)得EJB重呢?我們需要完全地投入到EJB中去,EJB的一些設(shè)計(jì)理念過(guò)于復(fù)雜,侵入性強(qiáng),開(kāi)發(fā)者需要嚴(yán)重依賴(Spring現(xiàn)在難道不是嗎)。

思考2:到底什么是輕量級(jí)

這里有一個(gè)公式:輕量系數(shù)=解決的問(wèn)題/侵入程度。簡(jiǎn)單來(lái)說(shuō)就是解決問(wèn)題的時(shí)候,侵入程度越低,就越輕量。

注:EJB當(dāng)時(shí)是Java霸主,官方的標(biāo)準(zhǔn),可以說(shuō)Spring誕生于EJB統(tǒng)治的黑暗年代。

它解決了什么痛點(diǎn)、什么問(wèn)題?

技術(shù)沒(méi)有銀彈,只有實(shí)事求是,解決問(wèn)題。

當(dāng)時(shí)的開(kāi)發(fā)嚴(yán)重依賴EJB,但是對(duì)于大多數(shù)程序員來(lái)說(shuō),很難理解和掌握,嚴(yán)重影響開(kāi)發(fā)效率。Spring就在這時(shí)候帶著其愿景:高效、簡(jiǎn)潔、輕量走入了人的視野。

解決的什么痛點(diǎn):Java應(yīng)用開(kāi)發(fā)嚴(yán)重依賴J2EE的標(biāo)準(zhǔn)規(guī)范框架EJB,EJB非常的臃腫,抽象復(fù)雜,很難被大眾掌握,影響開(kāi)發(fā)效率。

它有什么優(yōu)缺點(diǎn)?

沒(méi)有完美的技術(shù)、完美的框架、完美的實(shí)現(xiàn)。

優(yōu)點(diǎn):起初Spring非常輕量,僅包括IOC和DI、以及AOP,控制反轉(zhuǎn)和依賴注入、AOP切面編程讓你用的愛(ài)不釋手。

缺點(diǎn):框架的生態(tài)總要發(fā)展的,生態(tài)越來(lái)越多,配置越來(lái)越臃腫,它已經(jīng)不再讓我們感覺(jué)到輕量,因?yàn)榕渲锰嗔恕?/p>

缺點(diǎn)就是問(wèn)題,問(wèn)題就要解決。那么怎么解決的呢,后面我們會(huì)分析Spring Boot,到時(shí)候就知道了。

有什么核心功能特性、亮點(diǎn)

這個(gè)技術(shù)有哪些核心的功能,亮點(diǎn)是什么?能給我們帶來(lái)什么價(jià)值、收益?

Spring最初的核心:IOC和AOP,讓我們可以更輕量的編碼(還記得前面提的什么是輕量嗎)。

通過(guò)IOC和DI我們不再需要大量的new對(duì)象set對(duì)象進(jìn)行注入,一切交給Spring,我們只需要簡(jiǎn)單的在代碼之外的配置(spring.xml)里配置一下bean就行了。一切是多么的美好,因?yàn)樗p量。

通過(guò)AOP我們實(shí)現(xiàn)切面編程,我們可以抽取切面,對(duì)公共的能力進(jìn)行提取,日志、權(quán)限、監(jiān)控,一切更加美好了。

Spring 后來(lái)引入了事務(wù)管理、MVC,我們的開(kāi)發(fā)更加簡(jiǎn)單了。我們摒棄了原來(lái)用的Struts、丟掉了原生的JDBC,開(kāi)發(fā)效率大大提高。

核心功能實(shí)現(xiàn)原理、追其本質(zhì)

芒格曾經(jīng)說(shuō)過(guò),我們要學(xué)習(xí)重要學(xué)科的重要原理,像我們學(xué)習(xí)技術(shù)一樣,我們要學(xué)習(xí)主要框架的核心實(shí)現(xiàn)原理,了解其本質(zhì),了解其解決的痛點(diǎn),追其本質(zhì)。

IOC本質(zhì)是什么?

IOC全稱:Inversion of Control,即控制反轉(zhuǎn),是一種設(shè)計(jì)思想。簡(jiǎn)單來(lái)說(shuō)就是把創(chuàng)建對(duì)象的任務(wù)交給框架,而不是我們自己編碼。

 

框架的本質(zhì)分析——Spring框架

 

 

我們一直在說(shuō)IOC容器,那么容器的本質(zhì)是什么?

首先我們肯定想到容器嘛,肯定是一種數(shù)據(jù)結(jié)構(gòu)、比如集合。那么Spring中到底是用什么實(shí)現(xiàn)的呢?

如果看過(guò)源碼的小伙伴,肯定知道,其底層是一個(gè)Map,當(dāng)然還是ConcurrentHashMap。

private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);

 

框架的本質(zhì)分析——Spring框架

 

DI依賴注入本質(zhì)是什么?

有時(shí)候我們會(huì)說(shuō)DI是IOC的實(shí)現(xiàn)方式。

IOC主要的實(shí)現(xiàn)方式有兩種:依賴查找,依賴注入。

AOP的底層原理是什么?

AOP本質(zhì)是攔截,攔截的本質(zhì)是代理。

 

框架的本質(zhì)分析——Spring框架

 

 

框架的本質(zhì)分析——Spring框架

 

 

框架的本質(zhì)分析——Spring框架

 

Spring MVC為何誕生?

記得在Spring MVC組件沒(méi)出來(lái)之前,我們會(huì)用什么框架?SSI、SSH(Spring Struts Hibernate)、SSM(當(dāng)然現(xiàn)在也是SSM)。那么Spring MVC誕生的背景是什么?Struts真的就那么差嗎?這里有必要說(shuō)一下Java web框架的發(fā)展史:JSP/Servlet、Struts1.x、Struts2.x、Spring MVC。

Java Web的發(fā)展史

Model 1模型

 

框架的本質(zhì)分析——Spring框架

 

model 2模型,步入MVC時(shí)代

框架的本質(zhì)分析——Spring框架

 

MVC框架誕生

Struts1.x

框架的本質(zhì)分析——Spring框架

 

Struts2.x

框架的本質(zhì)分析——Spring框架

 

思考:為什么Struts2會(huì)被淘汰?

答案是:1. 漏洞太多,修不過(guò)來(lái);2.Spring 太火了能用Spring 搞定的事情你會(huì)用其他框架嗎,這種很少,我們可以看到招聘要求,很多時(shí)候都會(huì)要求Spring Mybatis這些框架能力,而很少提起Struts2了

Spring MVC

框架的本質(zhì)分析——Spring框架

 

Spring MVC實(shí)現(xiàn)原理是什么?本質(zhì)是什么?

在JSP、Servlet編碼泛濫的那個(gè)年代,我們會(huì)寫很多的Servlet,F(xiàn)ilter,需要調(diào)整各種順序,在web.xml里配置各種配置。我們都知道編寫Java Web都離不開(kāi)其核心Servlet,那么Spring MVC是如何搞的,它能脫離規(guī)范嗎?答案是:不能。

Spring MVC離不開(kāi)Servlet,其本質(zhì)就是Servlet,然后在Servlet執(zhí)行的流程上添加了很多特性。

其核心就是DispatcherServlet

框架的本質(zhì)分析——Spring框架

 

Spring MVC工作流程,可以發(fā)現(xiàn)其核心就是DispatcherServlet,其他的都是流程中的擴(kuò)展,讓整個(gè)處理流程可以更容易擴(kuò)展,解耦性更強(qiáng)。

框架的本質(zhì)分析——Spring框架

 

為何如此發(fā)展

分析發(fā)展路線圖、分析核心版本,追根溯源。

Spring發(fā)展史

框架的本質(zhì)分析——Spring框架

 

Spring的核心版圖

可以看到其版圖已經(jīng)從原來(lái)的IOC容器和AOP后來(lái)擴(kuò)張到了Web領(lǐng)域、Dao領(lǐng)域、ORM領(lǐng)域以及一些常用的JEE組件領(lǐng)域。

框架的本質(zhì)分析——Spring框架

 

最后,當(dāng)然Spring已經(jīng)延伸出了Spring Boot、Spring Cloud以及現(xiàn)階段的Spring Cloud Data Flow,接下來(lái)我們也會(huì)一點(diǎn)點(diǎn)剖析其本質(zhì)。

分享到:
標(biāo)簽:框架 Spring
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定