一、計(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)。

單一應(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)

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)。