一年又一年,字節(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è)主要模塊勉盅,如下所示:
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的新特性
- 完全支持Java 8
- 核心容器的增強(qiáng):支持范型依賴注入糖权;對(duì)CgLib類代理不要求必須有空參構(gòu)造器堵腹;提供了@Description、@Conditional温兼、@Lazy、@Order等新的注解
- 支持用Groovy定義Bean
- Web的增強(qiáng):開(kāi)始基于Servlet 3.0武契;為了方便REST開(kāi)發(fā)募判,引入了@RestController控制器注解;添加了一個(gè)AsyncRestTemplate支持Rest客戶端的異步無(wú)阻塞請(qǐng)求咒唆。
- 支持WebSocket
- 測(cè)試的增強(qiáng):Spring-test模塊里的所有注解都可以用作meta-annotation届垫,這樣就可以自定義組合注解來(lái)減少測(cè)試時(shí)的重復(fù)配置;提供了@Sql注解支持多數(shù)據(jù)源的測(cè)試全释。
- 提供了對(duì)JCache注解的支持装处,并對(duì)Cache抽象部分進(jìn)行了增強(qiáng)。
- 添加了動(dòng)態(tài)語(yǔ)言支持浸船,對(duì)動(dòng)態(tài)腳本語(yǔ)言計(jì)算表達(dá)式進(jìn)行了抽象封裝妄迁。
- 添加了多線程并發(fā)處理支持
- 增強(qiáng)了持久化處理
1.5 Spring的子項(xiàng)目
- 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)行完全的部署控制黔州。
- Spring Boot:Spring應(yīng)用快速開(kāi)發(fā)工具耍鬓,用來(lái)簡(jiǎn)化Spring應(yīng)用開(kāi)發(fā)過(guò)程。
- Spring XD:Spring XD(eXtreme Date流妻,極限數(shù)據(jù))是Pivotal的大數(shù)據(jù)產(chǎn)品牲蜀。它結(jié)合了Spring Boot和Grails,組成Spring IO平臺(tái)的執(zhí)行部分绅这。
- 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)支持棕叫。
- Spring Integration:Spring Integration為企業(yè)數(shù)據(jù)集成提供了各種適配器林螃,可以通過(guò)這些適配器來(lái)轉(zhuǎn)換各種消息格式,并幫助Spring應(yīng)用完成與企業(yè)應(yīng)用系統(tǒng)的集成俺泣。
- 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ù)處理而言,這些操作往往要求較高的可靠性)
- 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)控制功能赴肚。
- 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)踊跟。
- 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等拳昌。
- 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ù)器俊鱼。
- Spring for Android:Spring for Android為Android終端開(kāi)發(fā)應(yīng)用提供Spring的支持,它提供了一個(gè)在Android應(yīng)用環(huán)境中工作畅买、基于Java的REST客戶端并闲。
- Spring Mobile:Spring Mobile是基于Spring MVC構(gòu)建的,為移動(dòng)端的服務(wù)器應(yīng)用開(kāi)發(fā)提供支持谷羞。
- Spring Web Flow:Spring Web Flow(SWF)一個(gè)建立在Spring MVC基礎(chǔ)上的Web頁(yè)面流引擎帝火。
- 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ù)。
- 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等操作偿洁。
- 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。
- 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>