Spring詳解1.概述

一年又一年,字節(jié)跳動(dòng) Lark(飛書) 研發(fā)團(tuán)隊(duì)又雙叒叕開(kāi)始招新生啦!
【內(nèi)推碼】:GTPUVBA
【內(nèi)推鏈接】:https://job.toutiao.com/s/JRupWVj
【招生對(duì)象】:20年9月后~21年8月前 畢業(yè)的同學(xué)
【報(bào)名時(shí)間】:6.16-7.16(提前批簡(jiǎn)歷投遞只有一個(gè)月抓住機(jī)會(huì)哦N叫巍)
【畫重點(diǎn)】:提前批和正式秋招不矛盾!面試成功,提前鎖定Offer;若有失利,額外獲得一次面試機(jī)會(huì)啊奄,正式秋招開(kāi)啟后還可再次投遞渐苏。

點(diǎn)擊進(jìn)入我的博客

更多章節(jié)

Spring詳解1.概述
Spring詳解2.理解IoC容器
Spring詳解3.Bean的裝配
Spring詳解4.容器內(nèi)幕
Spring詳解5.AOP
Spring詳解6.基于AspectJ的AOP
Spring詳解7.Spring MVC
Spring詳解8.Spring DAO

1.1 Spring是什么

Spring是由Rod Johnson締造的一個(gè)分層的Java SE/EE應(yīng)用一站式的輕量級(jí)開(kāi)源框架,以IoC(Inverse of Control菇夸,反轉(zhuǎn)控制)和AOP(Aspect Oriented Programming琼富,面向切面編程)為內(nèi)核,提供了展現(xiàn)層Spring MVC庄新、持久層Spring JDBC及業(yè)務(wù)層事務(wù)管理等一站式的企業(yè)級(jí)應(yīng)用技術(shù)鞠眉。

1.2 Spring的優(yōu)點(diǎn)

  • 方便解耦——Spring提供的IoC容器實(shí)現(xiàn)了對(duì)象依賴關(guān)系的管理,避免了硬編碼導(dǎo)致的耦合择诈。
  • 支持AOP——Spring提供的AOP功能械蹋,方便進(jìn)行面向切面編程。
  • 聲明式事物——Spring提供了通過(guò)聲明的方式靈活的進(jìn)行事務(wù)管理羞芍。
  • 方便程序測(cè)試——可以用非容器以來(lái)的編程方式進(jìn)行幾乎所有的測(cè)試工作哗戈。
  • 集成了多種優(yōu)秀框架——Spring提供了對(duì)各種優(yōu)秀框架(如Struts、Hibernate荷科、Hessian唯咬、Quartz等)的直接支持。
  • 降低Java EE API的使用難度——Spring對(duì)很多難用的Java EE API(如JDBC畏浆、JavaMail胆胰、遠(yuǎn)程調(diào)用等)提供了一個(gè)薄薄的封裝層,使得這些Java EE API的使用難度大為降低刻获。
  • Java源碼是經(jīng)典學(xué)習(xí)范例——Spring的源碼設(shè)計(jì)精妙蜀涨、結(jié)構(gòu)清晰,是Java技術(shù)的最佳實(shí)踐的范例。

1.3 Spring體系結(jié)構(gòu)

Spring框架按照所屬功能可以劃分為5個(gè)主要模塊勉盅,如下所示:


Spring框架結(jié)構(gòu)
IOC

Spring的核心模塊實(shí)現(xiàn)了IoC的功能佑颇,它將類和類之間的依賴從代碼中脫離出來(lái),用配置的方式進(jìn)行依賴關(guān)系描述草娜,由IoC容器負(fù)責(zé)類的創(chuàng)建挑胸,管理,獲取等工作宰闰。

  • BeanFactory接口是Spring框架的核心接口茬贵,實(shí)現(xiàn)了容器很多核心的功能。
  • Context模塊構(gòu)建于核心模塊之上移袍,擴(kuò)展了BeanFactory的功能解藻,包括國(guó)際化、Bean生命周期控制葡盗、框架事件體系螟左、資源加載透明化等功能;還提供了眾多企業(yè)級(jí)服務(wù)的支持觅够,如郵件服務(wù)胶背、任務(wù)調(diào)度、JNDI喘先、EJB钳吟、遠(yuǎn)程訪問(wèn)等。ApplicationContext是Context模塊的核心接口窘拯。
  • 表達(dá)式語(yǔ)言(Expression Language)是統(tǒng)一表達(dá)式語(yǔ)言的一個(gè)擴(kuò)展红且,用于查詢和管理運(yùn)行期的對(duì)象,支持設(shè)置和獲取對(duì)象屬性涤姊,調(diào)用對(duì)象方法暇番,操作數(shù)組、集合等思喊。使用它可以很方便的通過(guò)表達(dá)式和Spring IoC容器進(jìn)行交互奔誓。
AOP

Spring提供了滿足AOP Alliance規(guī)范的實(shí)現(xiàn),還整合了AspectJ這種語(yǔ)言級(jí)的框架搔涝。Java 5.0引入了java.lang.instrument厨喂,允許在JVM啟動(dòng)時(shí)啟用一個(gè)代理類,通過(guò)該代理類在運(yùn)行期修改類的字節(jié)碼庄呈,改變一個(gè)類的功能蜕煌,從而實(shí)現(xiàn)AOP的功能。

數(shù)據(jù)訪問(wèn)和集成
  • Spring站在DAO的抽象層面诬留,建立了一套面向DAO層的統(tǒng)一的異常體系斜纪,同時(shí)將各種訪問(wèn)數(shù)據(jù)的檢查異常轉(zhuǎn)換成非檢查型異常贫母,為整合各種持久層框架提供基礎(chǔ)。
  • Spring通過(guò)模版化技術(shù)對(duì)各種高數(shù)據(jù)訪問(wèn)技術(shù)進(jìn)行了薄層封裝盒刚,將模式化的代碼隱藏起來(lái)腺劣,使數(shù)據(jù)訪問(wèn)的程序得到大幅簡(jiǎn)化。
  • 借助AOP技術(shù)因块,Spring提供了聲明式事務(wù)的功能橘原。
Web及遠(yuǎn)程操作
  • 該模塊建立在Application Context模塊之上,提供了Web應(yīng)用的各種工具類和多項(xiàng)面向Web的功能涡上。
  • Spring提供了一個(gè)完整的MVC框架——Spring MVC趾断,還整合Structs、WebWork等MVC框架吩愧。
  • WebSocket提供了一個(gè)在Web應(yīng)用中高效芋酌、雙向的通信,實(shí)現(xiàn)了客戶端和服務(wù)器之間的高頻和低延時(shí)消息交換雁佳。
測(cè)試框架

Spring可以用非容器依賴的編程方式進(jìn)行幾乎所有的測(cè)試工作脐帝,支持JUnit和TestNG等測(cè)試框架。

1.4 Spring4.0的新特性

  1. 完全支持Java 8
  2. 核心容器的增強(qiáng):支持范型依賴注入糖权;對(duì)CgLib類代理不要求必須有空參構(gòu)造器堵腹;提供了@Description、@Conditional温兼、@Lazy、@Order等新的注解
  3. 支持用Groovy定義Bean
  4. Web的增強(qiáng):開(kāi)始基于Servlet 3.0武契;為了方便REST開(kāi)發(fā)募判,引入了@RestController控制器注解;添加了一個(gè)AsyncRestTemplate支持Rest客戶端的異步無(wú)阻塞請(qǐng)求咒唆。
  5. 支持WebSocket
  6. 測(cè)試的增強(qiáng):Spring-test模塊里的所有注解都可以用作meta-annotation届垫,這樣就可以自定義組合注解來(lái)減少測(cè)試時(shí)的重復(fù)配置;提供了@Sql注解支持多數(shù)據(jù)源的測(cè)試全释。
  7. 提供了對(duì)JCache注解的支持装处,并對(duì)Cache抽象部分進(jìn)行了增強(qiáng)。
  8. 添加了動(dòng)態(tài)語(yǔ)言支持浸船,對(duì)動(dòng)態(tài)腳本語(yǔ)言計(jì)算表達(dá)式進(jìn)行了抽象封裝妄迁。
  9. 添加了多線程并發(fā)處理支持
  10. 增強(qiáng)了持久化處理

1.5 Spring的子項(xiàng)目

  1. Spring IO Platform : Spring IO是可集成的、構(gòu)建現(xiàn)代化應(yīng)用的版本平臺(tái)李命。Spring IO是模塊化的登淘、企業(yè)級(jí)的分布式系統(tǒng),包括一系列依賴封字,是的開(kāi)發(fā)者僅能對(duì)自己所需的部分進(jìn)行完全的部署控制黔州。
  2. Spring Boot:Spring應(yīng)用快速開(kāi)發(fā)工具耍鬓,用來(lái)簡(jiǎn)化Spring應(yīng)用開(kāi)發(fā)過(guò)程。
  3. Spring XD:Spring XD(eXtreme Date流妻,極限數(shù)據(jù))是Pivotal的大數(shù)據(jù)產(chǎn)品牲蜀。它結(jié)合了Spring Boot和Grails,組成Spring IO平臺(tái)的執(zhí)行部分绅这。
  4. Spring Data:Spring Data是為了簡(jiǎn)化構(gòu)建基于Spring框架應(yīng)用的數(shù)據(jù)訪問(wèn)實(shí)現(xiàn)涣达,包括非關(guān)系數(shù)據(jù)庫(kù)、Map-Reduce框架君躺、云數(shù)據(jù)服務(wù)等峭判;另外,也包含對(duì)關(guān)系數(shù)據(jù)庫(kù)的訪問(wèn)支持棕叫。
  5. Spring Integration:Spring Integration為企業(yè)數(shù)據(jù)集成提供了各種適配器林螃,可以通過(guò)這些適配器來(lái)轉(zhuǎn)換各種消息格式,并幫助Spring應(yīng)用完成與企業(yè)應(yīng)用系統(tǒng)的集成俺泣。
  6. Spring Batch:Spring Batch是一個(gè)輕量級(jí)的完整批處理框架疗认,皆在幫助應(yīng)用開(kāi)發(fā)者構(gòu)建一個(gè)健壯、高效的企業(yè)級(jí)批處理應(yīng)用(這些應(yīng)用的特點(diǎn)是不需要與用戶交互伏钠,重復(fù)的操作量大横漏,對(duì)于大容量的批量數(shù)據(jù)處理而言,這些操作往往要求較高的可靠性)
  7. Spring Security:Spring Security是一個(gè)能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制解決方案的安全框架熟掂。它提供了一組可以在Spring應(yīng)用上下文配置的bean缎浇,充分利用Ioc和AOP功能,為應(yīng)用系統(tǒng)提供聲明式的安全訪問(wèn)控制功能赴肚。
  8. Spring Hateoas:Spring Hateoas是一個(gè)用戶支持實(shí)現(xiàn)超文本驅(qū)動(dòng)的REST Web服務(wù)的開(kāi)發(fā)庫(kù)素跺,是Hateoas的實(shí)現(xiàn)。Hateoas(Hypermedia as the engine of application state)是REST架構(gòu)風(fēng)格中最復(fù)雜的約束誉券,也是構(gòu)建成熟REST服務(wù)的核心指厌。它的重要性在于打破了客戶端和服務(wù)器之間嚴(yán)格的契約,是的客戶端可以更加智能和自適應(yīng)踊跟。
  9. Spring Social:Spring Social是Spring框架的擴(kuò)展踩验,用來(lái)方便開(kāi)發(fā)Web社交應(yīng)用程序,可通過(guò)該項(xiàng)目來(lái)創(chuàng)建與各種社交網(wǎng)站的交互商玫,如Facebook箕憾,LinkedIn、Twitter等拳昌。
  10. Spring AMQP:Spring AMQP是基于Spring框架的AMQP消息解決方案厕九,提供模版化的發(fā)送和接收消息的抽象層,提供基于消息驅(qū)動(dòng)的POJO地回。這個(gè)項(xiàng)目支持Java和.NET連個(gè)版本扁远。Spring Source旗下的Rabbit MQ就是一個(gè)開(kāi)源的基于AMQP的消息服務(wù)器俊鱼。
  11. Spring for Android:Spring for Android為Android終端開(kāi)發(fā)應(yīng)用提供Spring的支持,它提供了一個(gè)在Android應(yīng)用環(huán)境中工作畅买、基于Java的REST客戶端并闲。
  12. Spring Mobile:Spring Mobile是基于Spring MVC構(gòu)建的,為移動(dòng)端的服務(wù)器應(yīng)用開(kāi)發(fā)提供支持谷羞。
  13. Spring Web Flow:Spring Web Flow(SWF)一個(gè)建立在Spring MVC基礎(chǔ)上的Web頁(yè)面流引擎帝火。
  14. Spring Web Service:Spring Web Service是基于Spring框架的Web服務(wù)框架,主要側(cè)重于基于文檔驅(qū)動(dòng)的Web服務(wù)湃缎,提供SOAP服務(wù)開(kāi)發(fā)犀填,允許通過(guò)多種方式創(chuàng)建Web服務(wù)。
  15. Spring LDAP:Spring LDAP是一個(gè)用戶操作LDAP的Java框架嗓违,類似Spring JDBC提供了JdbcTemplate方式來(lái)操作數(shù)據(jù)庫(kù)九巡。這個(gè)框架提供了一個(gè)LdapTemplate操作模版,可幫助開(kāi)發(fā)人員簡(jiǎn)化looking up蹂季、closing contexts冕广、encoding/decoding、filters等操作偿洁。
  16. Spring Session: Spring Session致力于提供一個(gè)公共基礎(chǔ)設(shè)施會(huì)話撒汉,支持從任意環(huán)境中訪問(wèn)一個(gè)會(huì)話,在Web環(huán)境下支持獨(dú)立于容器的集群會(huì)話涕滋,支持可插拔策略來(lái)確定Session ID睬辐,WebSocket活躍的時(shí)候可以簡(jiǎn)單地保持HttpSession。
  17. Spring Shell: Spring Shell提供交互式的Shell宾肺,用戶可以簡(jiǎn)單的基于Spring的編程模型來(lái)開(kāi)發(fā)命令溯饵。

1.5 Spring相關(guān)資料

Spring 官方文檔
Spring 參考文檔
Spring 項(xiàng)目地址
Spring Boot 項(xiàng)目地址
Spring Boot 參考文檔
Spring Cloud 參考文檔
Spring maven倉(cāng)庫(kù)

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>4.3.21.RELEASE</version>
</dependency>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市爱榕,隨后出現(xiàn)的幾起案子瓣喊,更是在濱河造成了極大的恐慌坡慌,老刑警劉巖黔酥,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異洪橘,居然都是意外死亡跪者,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門熄求,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渣玲,“玉大人,你說(shuō)我怎么就攤上這事弟晚⊥埽” “怎么了逾苫?”我有些...
    開(kāi)封第一講書人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)枚钓。 經(jīng)常有香客問(wèn)我铅搓,道長(zhǎng),這世上最難降的妖魔是什么搀捷? 我笑而不...
    開(kāi)封第一講書人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任星掰,我火速辦了婚禮,結(jié)果婚禮上嫩舟,老公的妹妹穿的比我還像新娘氢烘。我一直安慰自己,他們只是感情好家厌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布播玖。 她就那樣靜靜地躺著,像睡著了一般像街。 火紅的嫁衣襯著肌膚如雪黎棠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,541評(píng)論 1 305
  • 那天镰绎,我揣著相機(jī)與錄音脓斩,去河邊找鬼。 笑死畴栖,一個(gè)胖子當(dāng)著我的面吹牛随静,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播吗讶,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼燎猛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了照皆?” 一聲冷哼從身側(cè)響起重绷,我...
    開(kāi)封第一講書人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎膜毁,沒(méi)想到半個(gè)月后昭卓,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瘟滨,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年候醒,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杂瘸。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡倒淫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出败玉,到底是詐尸還是另有隱情敌土,我是刑警寧澤镜硕,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站返干,受9級(jí)特大地震影響谦疾,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜犬金,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一念恍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧晚顷,春花似錦峰伙、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至栓袖,卻和暖如春匣摘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裹刮。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工音榜, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捧弃。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓赠叼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親违霞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嘴办,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容