摘要:的面向的異常遵從通用的異常層次結(jié)構(gòu)。比如以前常用的框架,現(xiàn)在常用的框架包含許多項(xiàng)目,下面挑一些最常用的出來總結(jié)一下。狀態(tài)是流程中事件發(fā)生的地點(diǎn),在流程中通過轉(zhuǎn)移的方式從一個(gè)狀態(tài)到另一個(gè)狀態(tài),流程的當(dāng)前狀況稱為流程數(shù)據(jù)。
如今做Java尤其是web幾乎是避免不了和Spring打交道了,但是Spring是這樣的大而全,新鮮名詞不斷產(chǎn)生,學(xué)起來給人一種凌亂的感覺,我就在這里總結(jié)一下,理順頭緒。
Spring Spring 概述Spring 是一個(gè)開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的(替代更加重量級(jí)的企業(yè)級(jí)Java技術(shù), 尤其是EJB),它完成了大量開發(fā)中的通用步驟,留給開發(fā)者的僅僅是與特定應(yīng)用相關(guān)的部分,從而大大提高了企業(yè)應(yīng)用的開發(fā)效率。
Spring 框架是一個(gè)分層架構(gòu),由 7 個(gè)定義良好的模塊組成。Spring 模塊構(gòu)建在核心容器之上,核心容器定義了創(chuàng)建、配置和管理 bean 的方式如下圖:
組成 Spring 框架的每個(gè)模塊都可以多帶帶存在,或者與其他一個(gè)或多個(gè)模塊聯(lián)合實(shí)現(xiàn)。每個(gè)模塊的功能如下:
Spring 核心容器:核心容器提供 Spring 框架的基本功能,管理著Spring應(yīng)用中bean的創(chuàng)建、配置和管理。核心容器的主要組件是 BeanFactory,它是工廠模式的實(shí)現(xiàn)。BeanFactory 使用DI將應(yīng)用程序的配置和依賴性規(guī)范與實(shí)際的應(yīng)用程序代碼分開。
Spring 上下文:Spring 上下文是一個(gè)配置文件,向 Spring 框架提供上下文信息。提供了一種框架式的對(duì)象訪問方法,有些象JNDI注冊(cè)器。Context封裝包的特性得自于Beans封裝包,并添加了對(duì)國(guó)際化(I18N)的支持(例如資源綁定),事件傳播,資源裝載的方式和Context的透明創(chuàng)建,比如說通過Servlet容器。Spring 上下文和Bean工廠都是 bean 容器 的實(shí)現(xiàn)。
Spring AOP:通過配置管理特性,Spring AOP 模塊直接將面向方面的編程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何對(duì)象支持 AOP。Spring AOP 模塊為基于 Spring 的應(yīng)用程序中的對(duì)象提供了事務(wù)管理服務(wù)。
Spring DAO:JDBC DAO 抽象層提供了有意義的異常層次結(jié)構(gòu),可用該結(jié)構(gòu)來管理異常處理和不同數(shù)據(jù)庫供應(yīng)商拋出的錯(cuò)誤消息。異常層次結(jié)構(gòu)簡(jiǎn)化了錯(cuò)誤處理,并且極大地降低了需要編寫的異常代碼數(shù)量(例如打開和關(guān)閉連接)。Spring DAO 的面向 JDBC 的異常遵從通用的 DAO 異常層次結(jié)構(gòu)。
Spring ORM:Spring 框架插入了若干個(gè) ORM 框架,從而提供了 ORM 的對(duì)象關(guān)系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有這些都遵從 Spring 的通用事務(wù)和 DAO 異常層次結(jié)構(gòu)。
Spring Web 模塊:Web 上下文模塊建立在應(yīng)用程序上下文模塊之上,為基于 Web 的應(yīng)用程序提供了上下文。
Spring MVC 框架:MVC 框架是一個(gè)全功能的構(gòu)建 Web 應(yīng)用程序的 MVC 實(shí)現(xiàn)。通過策略接口,MVC 框架變成為高度可配置的,MVC 容納了大量視圖技術(shù),其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring 核心特點(diǎn):IOC和AOP控制反轉(zhuǎn)模式(IOC)也稱作依賴性介入(DI)的基本概念是:不創(chuàng)建對(duì)象,但是描述創(chuàng)建它們的方式。在代碼中不直接與對(duì)象和服務(wù)連接,但在配置文件中描述哪一個(gè)組件需要哪一項(xiàng)服務(wù)。容器 (在 Spring 框架中是 IOC 容器) 負(fù)責(zé)將這些聯(lián)系在一起。在典型的 IOC 場(chǎng)景中,容器創(chuàng)建了所有對(duì)象,并設(shè)置必要的屬性將它們連接在一起,決定什么時(shí)間調(diào)用方法。
Rod Johnson是第一個(gè)高度重視以配置文件來管理Java實(shí)例的協(xié)作關(guān)系的人,他給這種方式起了一個(gè)名字:控制反轉(zhuǎn)(Inverse of Control,IoC)。后來Martine Fowler為這種方式起了另一個(gè)名稱:依賴注入(Dependency Injection),因此不管是依賴注入,還是控制反轉(zhuǎn),其含義完全相同。
當(dāng)某個(gè)Java對(duì)象(調(diào)用者)需要調(diào)用另一個(gè)Java對(duì)象(被依賴對(duì)象)的方法時(shí),在傳統(tǒng)模式下通常有兩種做法
原始做法: 調(diào)用者主動(dòng)創(chuàng)建被依賴對(duì)象,然后再調(diào)用被依賴對(duì)象的方法
簡(jiǎn)單工廠模式: 調(diào)用者先找到被依賴對(duì)象的工廠,然后主動(dòng)通過工廠去獲取被依賴對(duì)象,最后再調(diào)用被依賴對(duì)象的方法.
注意上面的主動(dòng)二字,這必然會(huì)導(dǎo)致調(diào)用者與被依賴對(duì)象實(shí)現(xiàn)類的硬編碼耦合,非常不利于項(xiàng)目升級(jí)的維護(hù)。使用Spring框架之后,調(diào)用者無需主動(dòng)獲取被依賴對(duì)象,調(diào)用者只要被動(dòng)接受Spring容器為調(diào)用者的成員變量賦值即可,由此可見,使用Spring后,調(diào)用者獲取被依賴對(duì)象的方式由原來的主動(dòng)獲取,變成了被動(dòng)接受——所以Rod Johnson稱之為控制反轉(zhuǎn)。
另外從Spring容器的角度來看,Spring容器負(fù)責(zé)將被依賴對(duì)象賦值給調(diào)用者的成員變量——相當(dāng)于為調(diào)用者注入它依賴的實(shí)例,因此Martine Fowler稱之為依賴注入。
AOP(Aspect Orient Programming)也就是面向切面編程,作為面向?qū)ο缶幊痰囊环N補(bǔ)充,已經(jīng)成為一種比較成熟的編程方式。其實(shí)AOP問世的時(shí)間并不太長(zhǎng),AOP和OOP互為補(bǔ)充,面向切面編程將程序運(yùn)行過程分解成各個(gè)切面。
AOP專門用于處理系統(tǒng)中分布于各個(gè)模塊(不同方法)中的交叉關(guān)注點(diǎn)的問題,在JavaEE應(yīng)用中,常常通過AOP來處理一些具有橫切性質(zhì)的系統(tǒng)級(jí)服務(wù),如日志、事務(wù)管理、安全檢查、緩存、對(duì)象池管理等,AOP已經(jīng)成為一種非常常用的解決方案。
在典型的面向?qū)ο箝_發(fā)方式中,可能要將日志記錄語句放在所有方法和 Java 類中才能實(shí)現(xiàn)日志功能。在 AOP 方式中,可以反過來將日志服務(wù)模塊化,并以聲明的方式將它們應(yīng)用到需要日志的組件上,這樣 Java 類就不需要知道日志服務(wù)的存在,也不需要考慮相關(guān)的代碼。所以,用 Spring AOP 編寫的應(yīng)用程序代碼是松散耦合的。
Spring 優(yōu)點(diǎn)總結(jié)低侵入式設(shè)計(jì),代碼的污染極低:很多框架通過強(qiáng)迫應(yīng)用繼承它們的類或?qū)崿F(xiàn)它們的接口而導(dǎo)致應(yīng)用與框架綁死,而Spring是通過spring特有的注解和通用的pojo結(jié)合。Spring的非侵入編程模型意味著這個(gè)類在Spring應(yīng)用和非Spring應(yīng)用中都可以發(fā)揮同樣的作用。Spring的組件就是普通的Java Bean,這也使得單元測(cè)試可以不再依賴容器,編寫更加容易。
使用模板消除樣板式代碼: 如Spring的JdbcTemplate使得執(zhí)行數(shù)據(jù)庫操作時(shí)避免傳統(tǒng)的JDBC樣板代碼(創(chuàng)建一個(gè)數(shù)據(jù)庫連接,然后再創(chuàng)建一個(gè)語句對(duì)象,最后你才能進(jìn)行查詢,關(guān)閉數(shù)據(jù)庫連接、語句和結(jié)果集)成為了可能。
獨(dú)立于各種應(yīng)用服務(wù)器:基于Spring框架的應(yīng)用,可以真正實(shí)現(xiàn)Write Once,Run Anywhere的承諾。
Spring的IoC容器降低了業(yè)務(wù)對(duì)象替換的復(fù)雜性,降低了了組件之間的耦合性:對(duì)象的依賴關(guān)系將由系統(tǒng)中負(fù)責(zé)協(xié)調(diào)各對(duì)象的第三方組件在創(chuàng)建對(duì)象的時(shí)候進(jìn)行設(shè)定,所以對(duì)象無需自行創(chuàng)建或管理它們的依賴關(guān)系,依賴關(guān)系將被自動(dòng)注入到需要它們的對(duì)象當(dāng)中去。而且如果一個(gè)對(duì)象只通過接口而不是具體實(shí)現(xiàn)或初始化過程來表明依賴關(guān)系,那么這種依賴就能夠在對(duì)象本身毫不知情的情況下,用不同的具體實(shí)現(xiàn)進(jìn)行替換。
Spring的AOP支持允許將一些通用任務(wù)如安全、事務(wù)、日志等進(jìn)行集中式管理: 將核心業(yè)務(wù)和系統(tǒng)服務(wù)分離,保持POJO的簡(jiǎn)單性和內(nèi)聚性,從而使他們各自達(dá)到更好的復(fù)用。
Spring的ORM和DAO提供了與第三方持久層框架的良好整合,并簡(jiǎn)化了底層的數(shù)據(jù)庫訪問:
Spring的高度開放性,并不強(qiáng)制應(yīng)用完全依賴于Spring,開發(fā)者可自由選用Spring框架的部分或全部:當(dāng)Spring不能滿足需求時(shí), 完全可以考慮其他選擇。事實(shí)上, Spring甚至提供了與其他第三方框架和類庫的集成點(diǎn), 這樣你就不需要自己編寫這樣的代碼了。比如以前常用的SSH框架,現(xiàn)在常用的SSM框架
Spring包含許多項(xiàng)目,下面挑一些最常用的出來總結(jié)一下。
Spring MVCSpring MVC是Spring中的基礎(chǔ) Web 框架,基于模型-視圖-控制器(Model-View-Controller,MVC)模式實(shí)現(xiàn),它能夠幫你構(gòu)建像Spring框架那樣靈活和松耦合的Web應(yīng)用程序。
在該框架下,一次web請(qǐng)求大致可以分為如下圖幾個(gè)步驟,這些劃分分離了職責(zé),使得代碼靈活、維護(hù)性更好。
為了使用該框架,我們首先要配置DispatchServlet,也就是前端控制器,然后啟用Spring MVC,并編寫控制器,視圖,模型等等。
其中,DispatcherServlet是Spring MVC的核心,DispatcherServlet啟動(dòng)的時(shí)候,它會(huì)創(chuàng)建Spring應(yīng)用上下文,并加載配置文件或配置類中所聲明的bean或者自動(dòng)掃描的bean,但是在Spring Web應(yīng)用中,通常還會(huì)有另外一個(gè)應(yīng)用上下文,這個(gè)應(yīng)用上下文是由ContextLoaderListener創(chuàng)建的。DispatcherServlet加載包含Web組件的bean,如控制器、視圖解析器以及處理器映射,而ContextLoaderListener要加載應(yīng)用中的其他bean,通常是驅(qū)動(dòng)應(yīng)用后端的中間層和數(shù)據(jù)層組件。
Spring MVC是一個(gè)強(qiáng)大靈活的Web框架。借助于注解,Spring MVC提供了近似于POJO的開發(fā)模式,這使得開發(fā)處理請(qǐng)求的控制器變得非常簡(jiǎn)單,同時(shí)也易于測(cè)試。而且Spring MVC還支持多種視圖解析器如JSP,Tiles,Thymeleaf,使得前端界面的功能更強(qiáng)大,編寫更容易。
Spring Web FlowSpring Web Flow是Spring MVC的一個(gè)擴(kuò)展, 它為基于流程的會(huì)話式Web應(yīng)用(購(gòu)物車或者向?qū)Чδ埽┨峁┝酥С?。?jiǎn)言之,它是一個(gè)流程框架,能夠引導(dǎo)用戶執(zhí)行一系列向?qū)Р襟E。
在Spring Web Flow中,流程是由三個(gè)主要元素定義的:狀態(tài)、轉(zhuǎn)移和流程數(shù)據(jù)。狀態(tài)( State)是流程中事件發(fā)生的地點(diǎn),在流程中通過轉(zhuǎn)移的方式從一個(gè)狀態(tài)到另一個(gè)狀態(tài),流程的當(dāng)前狀況稱為流程數(shù)據(jù)。
狀態(tài)分為:
行為( Action) 行為狀態(tài)是流程邏輯發(fā)生的地方
決策( Decision) 決策狀態(tài)將流程分成兩個(gè)方向, 它會(huì)基于流程數(shù)據(jù)的評(píng)估結(jié)果確定流程方向
結(jié)束( End) 結(jié)束狀態(tài)是流程的最后一站。 一旦進(jìn)入End狀態(tài), 流程就會(huì)終止
子流程( Subflow) 子流程狀態(tài)會(huì)在當(dāng)前正在運(yùn)行的流程上下文中啟動(dòng)一個(gè)新的流程
視圖( View) 視圖狀態(tài)會(huì)暫停流程并邀請(qǐng)用戶參與流程
轉(zhuǎn)移連接了流程中的狀態(tài)。流程中除結(jié)束狀態(tài)之外的每個(gè)狀態(tài),至少都需要一個(gè)轉(zhuǎn)移,這樣就能夠知道一旦這個(gè)狀態(tài)完成時(shí)流程要去向哪里。狀態(tài)可以有多個(gè)轉(zhuǎn)移,分別對(duì)應(yīng)于當(dāng)前狀態(tài)結(jié)束時(shí)可以執(zhí)行的不同的路徑。
當(dāng)流程從一個(gè)狀態(tài)進(jìn)行到另一個(gè)狀態(tài)時(shí),它會(huì)帶走一些流程數(shù)據(jù)。有時(shí)候,這些數(shù)據(jù)只需要很短的時(shí)間(可能只要展現(xiàn)頁面給用戶)。有時(shí)候,這些數(shù)據(jù)會(huì)在整個(gè)流程中傳遞并在流程結(jié)束的時(shí)候使用。
Spring Web Flow 可以構(gòu)建會(huì)話式應(yīng)用程序的Web框架,這是好的,但是感覺其配置只能用xml這個(gè)設(shè)計(jì)不太合理,尤其是當(dāng)bean很多或者流程節(jié)點(diǎn)很多時(shí)都不好維護(hù)。
Spring Security安全對(duì)于許多應(yīng)用都是一個(gè)非常關(guān)鍵的切面,因?yàn)榘踩允浅綉?yīng)用程序功能的一個(gè)關(guān)注點(diǎn),應(yīng)用系統(tǒng)的絕大部分內(nèi)容都不應(yīng)該參與到與自己相關(guān)的安全性處理中。盡管我們可以直接在應(yīng)用程序中編寫安全性功能相關(guān)的代碼,但更好的方式還是將安全性相關(guān)的關(guān)注點(diǎn)與應(yīng)用程序本身的關(guān)注點(diǎn)進(jìn)行分離,作為系統(tǒng)的一個(gè)切面。Spring Security就是通過AOP和Filter來為應(yīng)用程序?qū)崿F(xiàn)安全性的。
使用Servlet規(guī)范中的Filter保護(hù)Web請(qǐng)求并限制URL級(jí)別的訪問。Spring Security還能夠使用Spring AOP保護(hù)方法調(diào)用——借助于對(duì)象代理和使用通知,能夠確保只有具備適當(dāng)權(quán)限的用戶才能訪問安全保護(hù)的方法。
Spring Security非常靈活,能夠基于各種數(shù)據(jù)存儲(chǔ)來認(rèn)證用戶。它內(nèi)置了多種常見的用戶存儲(chǔ)場(chǎng)景,如內(nèi)存、關(guān)系型數(shù)據(jù)庫以及LDAP。但我們也可以編寫并插入自定義的用戶存儲(chǔ)實(shí)現(xiàn)。
當(dāng)為瀏覽器渲染HTML內(nèi)容時(shí),你可能希望視圖中能夠反映安全限制和相關(guān)的信息。一個(gè)簡(jiǎn)單的樣例就是渲染用戶的基本信息( 比如顯示“您已經(jīng)以……身份登錄”)?;蛘吣阆敫鶕?jù)用戶被授予了什么權(quán)限,有條件地渲染特定的視圖元素。Spring Security本身提供了一個(gè)JSP標(biāo)簽庫,而Thymeleaf通過特定的方言實(shí)現(xiàn)了與Spring Security的集成。借助于這些,可以很容易的實(shí)現(xiàn)對(duì)視圖的保護(hù)。
Spring DataSpring Data 是為了簡(jiǎn)化構(gòu)建基于 Spring 框架應(yīng)用的數(shù)據(jù)訪問技術(shù),包括關(guān)系數(shù)據(jù)庫、NoSQL、Map-Reduce 框架、云數(shù)據(jù)服務(wù)等等,旨在提供一種通用、統(tǒng)一的編碼模式(但是并不是代碼完全一樣),使得在Spring中使用任何數(shù)據(jù)庫都變得非常容易。
Spring Data作為Spring Source的其中一個(gè)父項(xiàng)目,旨在統(tǒng)一和簡(jiǎn)化對(duì)各類型持久化存儲(chǔ),而不拘泥于是關(guān)系型數(shù)據(jù)庫還是NoSQL數(shù)據(jù)存儲(chǔ)。
目前的Spring Data 包含如下的模塊(或者說子項(xiàng)目):
Spring Data Commons
Spring Data JPA
Spring Data KeyValue
Spring Data LDAP
Spring Data MongoDB
Spring Data Gemfire
Spring Data REST
Spring Data Redis
Spring Data for Apache Cassandra
Spring Data for Apache Solr
Spring Data Couchbase (community module)
Spring Data Elasticsearch (community module)
Spring Data Neo4j (community module)
無論是哪種持久化存儲(chǔ),數(shù)據(jù)訪問對(duì)象(DAO,即Data Access Objects)通常都會(huì)提供對(duì)單一域?qū)ο蟮腃RUD(創(chuàng)建、讀取、更新、刪除)操作、查詢方法、排序和分頁方法等。Spring Data則提供了基于這些層面的統(tǒng)一接口(CrudRepository,PagingAndSortingRepository)以及對(duì)持久化存儲(chǔ)的實(shí)現(xiàn)。
你可能接觸過某一種Spring模型對(duì)象——比如JdbcTemplate——來編寫訪問對(duì)象的實(shí)現(xiàn)。但是在基于Spring Data的數(shù)據(jù)訪問對(duì)象,我們只需定義和編寫一些查詢方法的接口(基于不同的持續(xù)化存儲(chǔ), 定義有可能稍有不同),Spring Data會(huì)在運(yùn)行時(shí)間生成正確的實(shí)現(xiàn)。
所有Spring Data的子項(xiàng)目都支持:
模板:處理資源分配和異常處理
對(duì)象、數(shù)據(jù)存儲(chǔ)映射:如ORM
對(duì)數(shù)據(jù)訪問對(duì)象的支持: 幫助我們編寫一些模板式語句如分頁排序
然而一些Spring Data子項(xiàng)目,如Spring Data Redis和Spring Data Riak都只是提供模板,這是由于其相應(yīng)的數(shù)據(jù)存儲(chǔ)都只支持非結(jié)構(gòu)化的數(shù)據(jù),而不適用于對(duì)象的映射和查詢。
Spring BootSpring誕生時(shí)是Java企業(yè)版(Java Enterprise Edition, JEE,也稱J2EE)的輕量級(jí)代替品。無需開發(fā)重量級(jí)的Enterprise JavaBean(EJB),Spring為企業(yè)級(jí)Java開發(fā)提供了一種相對(duì)簡(jiǎn)單的方法。
雖然Spring的組件代碼是輕量級(jí)的,但它的配置卻是重量級(jí)的。一開始,Spring用XML配置,而且是很多的XML配置,即使后來有基于注解的改善,我們依然難逃大量配置的魔爪。而Spring Boot讓這一切成為了過去,如果說Spring的目的是簡(jiǎn)化程序的開發(fā),那么Spring Boot就是為了簡(jiǎn)化Spring本身的開發(fā)。
Spring Boot依賴于自動(dòng)配置技術(shù)將Spring應(yīng)用中樣板式的配置移除掉,這樣就能讓我們免受于一大堆的配置之苦,更加專注于業(yè)務(wù)功能。Spring Boot同時(shí)還提供了多個(gè)Starter項(xiàng)目,拿來即可用,極大地簡(jiǎn)化了編程任務(wù)。
它提供了四個(gè)主要的特性,能夠改變開發(fā)Spring應(yīng)用程序的方式:
Spring Boot Starter: 它將常用的依賴分組進(jìn)行了整合,將其合并到一個(gè)依賴中,這樣就可以一次性添加到項(xiàng)目的Maven或Gradle構(gòu)建中,這里可以找到目前所有的starter項(xiàng)目。
自動(dòng)配置: Spring Boot的自動(dòng)配置特性利用了Spring 4對(duì)條件化配置的支持,合理地推測(cè)應(yīng)用所需的bean并自動(dòng)化配置它們,減少了你自己需要配置的數(shù)量。
命令行接口(Command-line interface,CLI):Spring Boot的CLI發(fā)揮了Groovy編程語言的優(yōu)勢(shì),并結(jié)合自動(dòng)配置進(jìn)一步簡(jiǎn)化Spring應(yīng)用的開發(fā)。
Actuator: 它為Spring Boot應(yīng)用添加了一定的管理特性。
Spring Cloud在進(jìn)入主題之前,首先來看看微服務(wù),簡(jiǎn)單說來就是將原本單個(gè)獨(dú)立的大系統(tǒng)拆分為分布式的多個(gè)小型的服務(wù),這些小型服務(wù)各自獨(dú)立運(yùn)行,他們通過HTTP和RestFul API進(jìn)行通信。
一個(gè)微服務(wù)一般完成某個(gè)特定的功能,比如下單管理、客戶管理等等。每一個(gè)微服務(wù)都是微型六角形應(yīng)用,都有自己的業(yè)務(wù)邏輯和適配器。一些微服務(wù)還會(huì)發(fā)布API給其它微服務(wù)和應(yīng)用客戶端使用。其它微服務(wù)完成一個(gè)Web UI,運(yùn)行時(shí),每一個(gè)實(shí)例可能是一個(gè)云VM或者是Docker容器。
微服務(wù)具有分布式系統(tǒng)的特性,如服務(wù)發(fā)現(xiàn),負(fù)載均衡,故障轉(zhuǎn)移,多版本,灰度升級(jí),服務(wù)降級(jí),分布式跟蹤。
Spring Cloud是一套完整的分布式系統(tǒng)解決方案,它的子項(xiàng)目涵蓋了所有實(shí)現(xiàn)分布式系統(tǒng)所需要的基礎(chǔ)軟件設(shè)施(包括配置管理、服務(wù)治理、智能路由、全局鎖等等)。基于Spring Boot,Spring Boot做較少的配置,便可成為Spring Cloud中的一個(gè)微服務(wù),使用Spring Cloud的開發(fā)者可以快速的啟動(dòng)服務(wù)或構(gòu)建應(yīng)用、同時(shí)能夠快速和云平臺(tái)資源進(jìn)行對(duì)接,使得開發(fā)部署極其簡(jiǎn)單。
Spring Cloud專注于提供良好的開箱即用經(jīng)驗(yàn)的典型用例和可擴(kuò)展性機(jī)制覆蓋:
分布式/版本化配置:Spring Cloud Config
服務(wù)注冊(cè)和發(fā)現(xiàn):Netflix Eureka 或者 Spring Cloud Eureka(對(duì)前者的二次封裝)
路由:Spring Cloud Zuul 基于 Netflix Zuul
service - to - service調(diào)用:Spring Cloud Feign
負(fù)載均衡:Spring Cloud Ribbon 基于 Netflix Ribbon 實(shí)現(xiàn)
斷路器:Spring Cloud Hystrix
分布式消息傳遞:Spring Cloud Bus
后記總結(jié)了一大堆,感覺Spring Boot是趨勢(shì),畢竟效率是王道。然后就是Spring Data的各個(gè)項(xiàng)目,因?yàn)槿缃竦臄?shù)據(jù)源是越發(fā)的豐富。最后,近幾年微服務(wù)的概念挺火的,所以Spring Cloud也要多多了解。
閱讀原文:Mageek`s Wonderland
參考與感謝IBM developerWorks 中國(guó)
Spring基礎(chǔ)知識(shí)匯總
Spring 實(shí)戰(zhàn)
Spring Data —— 完全統(tǒng)一的API?
Spring Cloud Dalston
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/70558.html
摘要:框架最初是由編寫的,并且年月首次在許可下發(fā)布。在一個(gè)方法執(zhí)行之后,只有在方法退出拋出異常時(shí),才能執(zhí)行通知在建議方法調(diào)用之前和之后,執(zhí)行通知。方法執(zhí)行之后,不考慮其結(jié)果,執(zhí)行通知。 導(dǎo)讀: 在上篇文章的結(jié)尾提到了Spring Boot 提供了一系列的框架整合(Starter POMs)幫助我們提升開發(fā)效率,但是這并不意味著我們不需要學(xué)習(xí)這些框架,反而更需要去學(xué)習(xí),通過學(xué)習(xí)這些框架可以使...
摘要:基于的架構(gòu)實(shí)戰(zhàn)案例配置文件屬性內(nèi)容加解密使用過配置文件的朋友都知道,資源文件中的內(nèi)容通常情況下是明文顯示,安全性就比較低一些。,官方給出的釋意是項(xiàng)目也采用此加密組件,結(jié)合使用。 基于SpringCloud的Microservices架構(gòu)實(shí)戰(zhàn)案例-配置文件屬性內(nèi)容加解密 使用過SpringBoot配置文件的朋友都知道,資源文件中的內(nèi)容通常情況下是明文顯示,安全性就比較低一些。打開appl...
摘要:圖片抓取簡(jiǎn)單一覽項(xiàng)目目的通過示例項(xiàng)目,初步接觸,等常用工具,熟悉常用環(huán)境使用通過獲取美食杰數(shù)據(jù),使用來解析數(shù)據(jù)并抓取處理目標(biāo)數(shù)據(jù)。示例中要識(shí)別出地址中的圖片地址。 【圖片抓取】002-簡(jiǎn)單一覽 [toc] 項(xiàng)目目的 通過示例項(xiàng)目,初步接觸spring boot,maven等常用工具,熟悉常用JAVA環(huán)境;使用通過httpclient獲取美食杰html數(shù)據(jù),使用jsoup來解析html數(shù)...
摘要:今天逛了逛,順手精選出了一下近幾個(gè)月以來上最熱門的個(gè)項(xiàng)目。相關(guān)閱讀正式開源,幫助應(yīng)用快速容器化未來可能會(huì)上熱門的項(xiàng)目地址介紹哈哈,皮一下很開心。這是我自己開源的一份文檔,目前仍在完善中,歡迎各位英雄好漢一起完善。 showImg(https://segmentfault.com/img/remote/1460000015766827?w=391&h=220);今天逛了逛Github,順...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
閱讀 2554·2023-04-25 19:47
閱讀 3399·2019-08-29 17:18
閱讀 862·2019-08-29 15:26
閱讀 3372·2019-08-29 14:17
閱讀 1156·2019-08-26 13:49
閱讀 3350·2019-08-26 13:22
閱讀 3035·2019-08-26 10:44
閱讀 2703·2019-08-23 16:51