亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

框架的本質分析——Spring框架

 

誕生的背景

什么背景下誕生了該技術?

不論是哪個框架,不會平白無故誕生,不會平白無故地被人所追捧,了解其背景,追根溯源。

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

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

回顧歷史,我們來看現在的Spring,實際上其生態已經非常完善,也已經變得非常重,但是我們可以選擇性地使用其特性,而且使用過程中我們對其感知稍弱。

那么EJB呢,為什么Rod Johnson會覺得EJB重呢?我們需要完全地投入到EJB中去,EJB的一些設計理念過于復雜,侵入性強,開發者需要嚴重依賴(Spring現在難道不是嗎)。

思考2:到底什么是輕量級

這里有一個公式:輕量系數=解決的問題/侵入程度。簡單來說就是解決問題的時候,侵入程度越低,就越輕量。

注:EJB當時是Java霸主,官方的標準,可以說Spring誕生于EJB統治的黑暗年代。

它解決了什么痛點、什么問題?

技術沒有銀彈,只有實事求是,解決問題。

當時的開發嚴重依賴EJB,但是對于大多數程序員來說,很難理解和掌握,嚴重影響開發效率。Spring就在這時候帶著其愿景:高效、簡潔、輕量走入了人的視野。

解決的什么痛點:Java應用開發嚴重依賴J2EE的標準規范框架EJB,EJB非常的臃腫,抽象復雜,很難被大眾掌握,影響開發效率。

它有什么優缺點?

沒有完美的技術、完美的框架、完美的實現。

優點:起初Spring非常輕量,僅包括IOC和DI、以及AOP,控制反轉和依賴注入、AOP切面編程讓你用的愛不釋手。

缺點:框架的生態總要發展的,生態越來越多,配置越來越臃腫,它已經不再讓我們感覺到輕量,因為配置太多了。

缺點就是問題,問題就要解決。那么怎么解決的呢,后面我們會分析Spring Boot,到時候就知道了。

有什么核心功能特性、亮點

這個技術有哪些核心的功能,亮點是什么?能給我們帶來什么價值、收益?

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

通過IOC和DI我們不再需要大量的new對象set對象進行注入,一切交給Spring,我們只需要簡單的在代碼之外的配置(spring.xml)里配置一下bean就行了。一切是多么的美好,因為它輕量。

通過AOP我們實現切面編程,我們可以抽取切面,對公共的能力進行提取,日志、權限、監控,一切更加美好了。

Spring 后來引入了事務管理、MVC,我們的開發更加簡單了。我們摒棄了原來用的Struts、丟掉了原生的JDBC,開發效率大大提高。

核心功能實現原理、追其本質

芒格曾經說過,我們要學習重要學科的重要原理,像我們學習技術一樣,我們要學習主要框架的核心實現原理,了解其本質,了解其解決的痛點,追其本質。

IOC本質是什么?

IOC全稱:Inversion of Control,即控制反轉,是一種設計思想。簡單來說就是把創建對象的任務交給框架,而不是我們自己編碼。

 

框架的本質分析——Spring框架

 

 

我們一直在說IOC容器,那么容器的本質是什么?

首先我們肯定想到容器嘛,肯定是一種數據結構、比如集合。那么Spring中到底是用什么實現的呢?

如果看過源碼的小伙伴,肯定知道,其底層是一個Map,當然還是ConcurrentHashMap。

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

 

框架的本質分析——Spring框架

 

DI依賴注入本質是什么?

有時候我們會說DI是IOC的實現方式。

IOC主要的實現方式有兩種:依賴查找,依賴注入。

AOP的底層原理是什么?

AOP本質是攔截,攔截的本質是代理。

 

框架的本質分析——Spring框架

 

 

框架的本質分析——Spring框架

 

 

框架的本質分析——Spring框架

 

Spring MVC為何誕生?

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

Java Web的發展史

Model 1模型

 

框架的本質分析——Spring框架

 

model 2模型,步入MVC時代

框架的本質分析——Spring框架

 

MVC框架誕生

Struts1.x

框架的本質分析——Spring框架

 

Struts2.x

框架的本質分析——Spring框架

 

思考:為什么Struts2會被淘汰?

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

Spring MVC

框架的本質分析——Spring框架

 

Spring MVC實現原理是什么?本質是什么?

在JSP、Servlet編碼泛濫的那個年代,我們會寫很多的Servlet,Filter,需要調整各種順序,在web.xml里配置各種配置。我們都知道編寫Java Web都離不開其核心Servlet,那么Spring MVC是如何搞的,它能脫離規范嗎?答案是:不能。

Spring MVC離不開Servlet,其本質就是Servlet,然后在Servlet執行的流程上添加了很多特性。

其核心就是DispatcherServlet

框架的本質分析——Spring框架

 

Spring MVC工作流程,可以發現其核心就是DispatcherServlet,其他的都是流程中的擴展,讓整個處理流程可以更容易擴展,解耦性更強。

框架的本質分析——Spring框架

 

為何如此發展

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

Spring發展史

框架的本質分析——Spring框架

 

Spring的核心版圖

可以看到其版圖已經從原來的IOC容器和AOP后來擴張到了Web領域、Dao領域、ORM領域以及一些常用的JEE組件領域。

框架的本質分析——Spring框架

 

最后,當然Spring已經延伸出了Spring Boot、Spring Cloud以及現階段的Spring Cloud Data Flow,接下來我們也會一點點剖析其本質。

分享到:
標簽:框架 Spring
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定