Java架構(gòu)發(fā)展歷程與Spring簡(jiǎn)介

一、計(jì)算機(jī)架構(gòu)發(fā)展歷程

隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用的規(guī)模不斷擴(kuò)大,常規(guī)的垂直應(yīng)用架構(gòu)已無(wú)法應(yīng)對(duì),分布式服務(wù)架構(gòu)以及流動(dòng)計(jì)算架構(gòu)勢(shì)在必行,亟需一個(gè)治理系統(tǒng)確保架構(gòu)有條不紊的演進(jìn)。

網(wǎng)站應(yīng)用的演進(jìn)

單一應(yīng)用架構(gòu)

當(dāng)網(wǎng)站流量很小時(shí),只需一個(gè)應(yīng)用,將所有功能都部署在一起,以減少部署節(jié)點(diǎn)和成本。此時(shí),用于簡(jiǎn)化增刪改查工作量的數(shù)據(jù)訪問(wèn)框架(ORM)是關(guān)鍵。

垂直應(yīng)用架構(gòu)

當(dāng)訪問(wèn)量逐漸增大,單一應(yīng)用增加機(jī)器帶來(lái)的加速度越來(lái)越小,提升效率的方法之一是將應(yīng)用拆成互不相干的幾個(gè)應(yīng)用,以提升效率。此時(shí),用于加速前端頁(yè)面開(kāi)發(fā)的Web框架(MVC)是關(guān)鍵。

分布式服務(wù)架構(gòu)

當(dāng)垂直應(yīng)用越來(lái)越多,應(yīng)用之間交互不可避免,將核心業(yè)務(wù)抽取出來(lái),作為獨(dú)立的服務(wù),逐漸形成穩(wěn)定的服務(wù)中心,使前端應(yīng)用能更快速的響應(yīng)多變的市場(chǎng)需求。此時(shí),用于提高業(yè)務(wù)復(fù)用及整合的分布式服務(wù)框架(RPC)是關(guān)鍵。

流動(dòng)計(jì)算架構(gòu)

當(dāng)服務(wù)越來(lái)越多,容量的評(píng)估,小服務(wù)資源的浪費(fèi)等問(wèn)題逐漸顯現(xiàn),此時(shí)需增加一個(gè)調(diào)度中心基于訪問(wèn)壓力實(shí)時(shí)管理集群容量,提高集群利用率。此時(shí),用于提高機(jī)器利用率的資源調(diào)度和治理中心(SOA)是關(guān)鍵。

二、Java主流框架的演進(jìn)

1、severlet+JSP+Javabean

框架圖

2、MVC三層架構(gòu)

架構(gòu)圖

3、使用EJB進(jìn)行應(yīng)用的開(kāi)發(fā),但是EJB是 重量級(jí)框架(在使用的時(shí)候,過(guò)多的接口和依賴,侵入性強(qiáng)),在使用上比較麻煩

4、Struts 1/Struts2+Hibernate+Spring(SSH)

5、SpringMVC+Mybatis+Spring(SSM)

6、SpringBoot開(kāi)發(fā), 約定大于配置

三、Spring簡(jiǎn)介

Spring是一個(gè)輕量級(jí)Java開(kāi)發(fā)框架, 最早有Rod Johnson創(chuàng)建,目的是為了解決企業(yè)級(jí)應(yīng)用開(kāi)發(fā)的業(yè)務(wù)邏輯層和其他各層的耦合問(wèn)題。它是一個(gè)分層的JavaSE/JavaEE fll-stack (一站式)輕量級(jí)開(kāi)源框架,為開(kāi)發(fā)Java應(yīng)用程序提供全面的基礎(chǔ)架構(gòu)支持。Spring負(fù)責(zé)基礎(chǔ)架構(gòu),因此Java開(kāi)發(fā)者可以專注于應(yīng)用程序的開(kāi)發(fā)。
Spring最根本的使命是解決企業(yè)級(jí)應(yīng)用開(kāi)發(fā)的復(fù)雜性,即簡(jiǎn)化Java開(kāi)發(fā)。
Spring可以做很多事情,它為企業(yè)級(jí)開(kāi)發(fā)提供給了豐富的功能,但是這些功能的底層都依賴于它的兩個(gè)核心特性,也就是依賴注入(dependency injection, DI) 和面向切面編程(aspect-oriented
programming, AOP)。

簡(jiǎn)略核心解釋

spring是一個(gè)輕量 級(jí)的開(kāi)源框架。
spring是為了簡(jiǎn)化企業(yè)開(kāi)發(fā)而生的,使得開(kāi)發(fā)變得更加優(yōu)雅和簡(jiǎn)潔。E
spring是一個(gè)OC和AOP的容器框架。
I0C:控制反轉(zhuǎn)
AOP:面向切面編程
容器.包含并管理應(yīng)用對(duì)象的生命周期

使用spring的優(yōu)點(diǎn)

1、Spring通過(guò)DI、 AOP和消除樣板式代碼來(lái)簡(jiǎn)化企業(yè)級(jí)Java開(kāi)發(fā)
2、Spring框架之 外還存在一個(gè)構(gòu)建在核心框架之上的龐大生態(tài)圈,它將Spring擴(kuò) 展到不同的領(lǐng)域,如Web服務(wù)、REST. 移動(dòng)開(kāi)發(fā)以及NoSQL
3、低侵入式設(shè)計(jì),代碼的污染極低
4、獨(dú)立于各種應(yīng)用服務(wù)器,基于Spring框架的應(yīng)用,可以真正實(shí)現(xiàn)Write Once,Run Anywhere的承諾
5、Spring的loC容 器降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性,提高了組件之間的解耦
6、Spring的AOP支持允許將-些通用任務(wù)如安全、事務(wù)、日志等進(jìn)行集中式處理,從而提供了更好的復(fù)用
7、Spring的ORM和DAO提供了與第三方持久層框架的的良好整合,并簡(jiǎn)化了底層的數(shù)據(jù)庫(kù)訪問(wèn)
8、Spring的高度開(kāi)放性, 并不強(qiáng)制應(yīng)用完全依賴于Spring, 開(kāi)發(fā)者可自由選用Spring框架的部分或全部
9、任何一個(gè)語(yǔ)言或者任何一個(gè)框架想要立于不敗之地,那么很重要的就是它的生態(tài)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 閱讀提示:本文是讀 kimmking 在 GitChat 上分享的文章 「軟件架構(gòu)發(fā)展歷程分享」后的一些總結(jié),黑體...
    米茶餓了閱讀 1,213評(píng)論 0 3
  • 新的一年伊始,由于公司內(nèi)部組織架構(gòu)調(diào)整,本來(lái)是做Android方面開(kāi)發(fā)的,近來(lái)要轉(zhuǎn)做下發(fā)接口開(kāi)發(fā),不可避免就要去學(xué)...
    斜杠時(shí)光閱讀 39,777評(píng)論 5 61
  • Spring所謂的自動(dòng)裝配,實(shí)質(zhì)就是實(shí)現(xiàn)了對(duì)依賴注入的一個(gè)簡(jiǎn)化操作,而依賴注入就是Spring幫助你完成對(duì)象的組織...
    _小毛驢閱讀 423評(píng)論 0 0
  • 久違的晴天,家長(zhǎng)會(huì)。 家長(zhǎng)大會(huì)開(kāi)好到教室時(shí),離放學(xué)已經(jīng)沒(méi)多少時(shí)間了。班主任說(shuō)已經(jīng)安排了三個(gè)家長(zhǎng)分享經(jīng)驗(yàn)。 放學(xué)鈴聲...
    飄雪兒5閱讀 7,867評(píng)論 16 22
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開(kāi)了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    余生動(dòng)聽(tīng)閱讀 10,914評(píng)論 0 11

友情鏈接更多精彩內(nèi)容