Spring源碼大總結資料_第1頁
Spring源碼大總結資料_第2頁
Spring源碼大總結資料_第3頁
Spring源碼大總結資料_第4頁
Spring源碼大總結資料_第5頁
已閱讀5頁,還剩242頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

最新Spring源碼大總結

目錄

第一部分:書籍功能總結3

第一章Spring概述3

1.1Spring包3

1.2SpringIDE4

1.3Spring3.0的新特性9

第二章標簽和注解11

2.1標簽大列表11

2.1.1BeansnameSpace說明12

2.1.2AOPnamespace說明67

2.1.3contextnamespace說明80

2.1.4txnamespace說明95

2.1.5utilnamespace說明103

2.1.6p命名空間106

2.2注解列舉107

2.2.1org.springframework.beans108

2.2.2org.springframework.context116

2.2.3org.springfreamwork.expression128

2.2.4org.springframework.core128

2.2.5org.springframework.transaction128

2.2.6org.springframework.servlet129

2.2.7org.springframework.web129

2.2.8org.springframework.aop140

第三章SpringIOC141

3.1IOC容器概述141

3.1.1Spring幾種配置方式141

3.1.2幾種注入方式141

3.1.3BeanFactory和Applicationcontext的比較142

3.1.4Bean生命周期150

3.2資源訪問163

3.2Bean的裝配172

3.2.1SpringBean容器高層視圖172

3.2.2依賴注入173

3.2.3注入參數詳解173

3.2.4方法注入174

3.2.5Bean之間的關系175

3.2.6Bean作用域175

3.2.6FacotryBean175

3.3回調接口175

3.5屬性編輯器177

3.6國際化信息178

3.7事與件發(fā)布181

3.8spEL表達式190

3.9IOC常見interface詳解190

第四章SpringAOP193

4.1AOP的術語194

4.2動態(tài)代理195

4.2.1JDK動態(tài)代理195

4.2.2CGLIB動態(tài)代理199

4.2.3AOP聯(lián)盟200

4.3創(chuàng)建增強類200

4.4創(chuàng)建切面212

4.4.1切點類型213

4.4.2切面類型213

4.5自動創(chuàng)建代理216

4.6@AspectJ注解217

4.6.1簡單例子217

4.6.2@AspectJ語法詳解218

4.7Schema的AOP221

4.7.1Schema配置切面222

4.7.2混合切面類型223

第五章SpringMVC224

5.1SpringMVC概述224

5.1.1體系結構224

5.1.2注解驅動的控制器227

5.2Handlermappings229

5.3視圖解析器231

5.4Handlerexceptions235

5.5上傳文件236

5.6數據綁定237

5.7本地化解析237

5.8HttpMessageConverter237

第六章Spring數據訪問246

第七章Spring任務調度246

第八章Spring遠程調用246

第九章SpringJMS246

第十章Spring測試246

第二部分:架構圖總結246

第三部分:流程圖+源碼注釋247

第四部分:知識點原理247

參考247

第一部分:書籍功能總結

第一章Spring概述

1.1Spring包

?包預覽

拼org.springframework.aop

org.springframework.asm

org.springframework,aspects

org.springframework,beans

org.springframework.context

org.springframework.context,support

org.springframework.core

org.springframework.expression

org.springframework.instrument

org.springframework.instrument,tomcat

org.springframework.integration-tests

org.springframework.jdbc

org.springframework,jms

國影org.springframework.orm

國科org.springframework.oxm

ffiorg.springframework.spring-library

ISL3org.springframework.spring-parent

國好org.springframework.test

ffi*3org.springframework.transaction

org.springframework.web

ffi好org.springframework.web.portlet

(S整org.springframework.web.servlet

田!aporg.springframework.web.struts

?Spring體系結構

IOC

Spring核心模塊實現了loc的功能,它將類和類之間的依賴從代碼中脫離出來,用配置

的方式進行依賴關系描述,有IOC容器負責依賴類之間的創(chuàng)建、拼接、管理、獲取等工作,

BeanFactory接口是Spring框架的核心接口,它實現了容器許多核心的功能。

Context模塊構建于核心模塊之上,擴展了BeanFactory的功能,添加了il8n國際化、

Bean生命周期控制、框架事與件體系、資源加載透明化等多項功能。該模塊還提供了許多

企業(yè)級服務的支持,如郵件服務、任務調度、JNDI定位、EJB集成、遠程訪問等。

Applicationcontext是Context模塊的核心接口。

表達式語言模塊是統(tǒng)一表達式語言的一個擴展,該表達式語言用于查詢和管理運行期

的對象,支持設置和獲取對象屬性,調用對象方法、操作數組、整合等。還提供了邏輯表

達式運算、變量定義等功能。

?AOP

AOP是進行橫切邏輯編程的思想,它開拓了考慮問題的思路。在AOP模塊里,Spring

提供了滿足AOPAlliance規(guī)范的實現,還整合了Aspectl這種AOP語言級的框架。在Spring

里實現AOP編程擁有眾多的選擇。Java5.0java.lang.instrument,允許啟動時啟用一個代理類,

通過該代理類在運行期修改類的字節(jié)碼,改變一個類的功能,實現AOP的功能。

?數據訪問和集成

任何應用程序,其核心的問題是對數據的訪問和操作。數據有很多表現形式,如數據表、

XML、消息,而每種數據形式又擁有不同的數據訪問技術(既可以直接通過JDBC,也可以通

過Hibernate或者iBatis)

?Web及遠程操作

該模塊建立在ApplicationContext模塊之上,提供了Web應用的各種工具類,如通過Listener

或Servlet初始化Spring容器,將Spring容器主冊到Web容器中。其次,該模塊還提供了

多項面向Web的功能,如透明化文件上傳、Velocity、FreeMarker、XSLT的支持,此外,Spring

可以整合Struts、WebWork>TapestryWeb等MVC框架。

?Web及遠程訪問

1.2SpringIDE

1、AddSpringBeansprojectnature

BjromaImport...

T

用‘評roma.core-l.3.1-Export...iLikeSeai:chService"cla;

,rtynaroe=f,urlrt>

+1|£Qroma.docs-l.3.1-

FindBugs?ralue>§{cmserverUr1)</va

囹roma.security_1.

J"Refresherty>

田roma.test-1.3.1-

rr

-CloseProjectrtyname=cookieEnabled

日iroma.web-l.3.1S

汨{cookieEnabled)</'

田:用src/maixi/javCloseUnrelatedProjects

erty>

田由src/main/resAssignWorkingSets...

■?理src/test/jav

F51EasyExplore...

國用src/test/res

+匹,JRESystemLMavenWebApplication-Compile

MavenWebApplication-Run

田BriReferencedLTTestNG鼎ServersSearch

囤昂roma-shy3-exMavenWebApplication-Debug

+?昂roma-yui-extRunAs?

like

國篇srcDebugAs?

&targetProfileAs?

k.context

y?pom.xml3334!吊ProfileAs

k.integralion-tests

.project,jell:?

CoverageAsk.test

X,project,xmlValidate

Socket

■CommandLineShell

口okkk

ExploreFiles

OfOperation!ools2

日SocketCopypath(s)toclipboard

S澇src*AddReviewIssue...

囹田com.whf.gTeam?

國abcc.xsdCompareWith?

+i昌.JBESystemLReplaceWith?

personbyteRestorefromLocalHistory...

<UML?

PyDev?

口。roma.web-l.3.1

1SpringToolsAddSpringProjectNature

2、AddreferencestootherSpringprojects

3、AddSpringBeansfactoryconfigfiles

4、OpenSpringBeansview

riptsTomcatRunDesignWindowHelp-

?小,玲,時(B&&.,卜o|**?Sa

ith-security.xXhollywoodnianager-conXilike4hollywood-cont[Sjroma-urlrewrite2.0.J[2)roma.x

?xmlversion-nl.O,rencodingsr,UTF-dn?>

beansxmlns="http://wwur.springtramework.org/scheiaa/beans”

xmlns:xsis"http://www.w3.org/2001/XMLScheitia-instance,fxmlns:p-rthttp://www.springfr

xmlns:jee=//www.springfraznework.org/schema/jeeHxmlns:tx=rrhttp://www.spring!

xmlns:util=fthttp://www.springfraraewoi:k,org/scheiua/util”

xsi:schamaLocation="____________________________________________________________________

OOpenBeanE回區(qū))

Enterbean(id,name,type)prefixorpattern(?,*,orcamelcase):

handler|sc

Matchingbeans:

令handlerAd&pter

令handlerAdapter[com.alib&ba.roma.web.handler.ComponentKandlerAdapter]

*handlerAdapter[com.alibaba.roma.web.handler.ComponentHandlerAdapter]

?handlerMapping

令handlerMapping[com.alibaba.roma.web.handler.ComponentHandlerMapping]

?handlerMapping[com.alibaba.roma.web.handler.ComponentH皿dlerMapping]

ms漢

>rs,441

.ion

-ors(10)

"nings(I

應/roma.web-l.3.1-SNAPSHOT/src/main/resources/roma-with-seciirity.xml

OKCancel

5、ValidateSpringBeansconfigfile

<Xroaa-with-security,xXhollywoodmanager-conXilike4holljnrood-controma-urlrewrite-2.0.

13

14<!一一Roma配置文件的PropertyPlaceholderConfigurer-->

15<beanid",,romaConfigBeannclass-^com.alibaba.roma.core,environnient.RomaConfiffurernlazy-ir

i?<!--框架啟動的事件監(jiān)聽器->

18<beanid="defaiiltRramvorNEyehtLWstener“class=ncom.alibaba.roaia.web.servlet.DefaultFramwoi

19

20--定義vie出ToolFaccory-一>

?_:[Class'com,alib.roma.web.view,tools.ippl.De£aultYiewToolFactory'notfoundlziew.tools.impl.DefaultViewToolFactory

22<!—框架缺省的tools—>

1238<?—

*24<propertyname="cools”>

,25<map/>

i26</property>

I27—>

6、ShowGraphandSpringExplore

打開SpringExplore

E13Hollywood,deploy,ilike

國扇dragoon,xml77692117-22上午12:01jingshun.shijs77692117-22上午12:01jingshunshijs

曰ilike4holly?ood-context.xml7960211-10-10下午6:53jingshun.shijs7960211-10-10下千6.53jinjshun.shijs

白曷beans79602ll-10-I0下午6:53jingshunshijs

ii通nessageSource

S?formResolver

?xstreamFactory[com.asc.alibaba.cmweb.commoitXStreamFactory]

?xstream

?staticPageSearchService[co*,asc.alibaba.cm?eb.service,impl.StaticPageSearchServicelmpl]

3?iLikeSearchService[com.asc.alibaba.cmreb.service,impl.SearchServicelmpl]

±0iLikeSearchServiceForBucketTest(com.asc.alibaba.cmweb.service,impl.BucketTestSearchServicelapl]

'S?cookieSwitch[co?.asc.alibaba,cm?eb.service,impl.Cooki?Switch]

±0biddingservice[com.asc.alibaba.cmweb.service,impl.Biddingservicelmpl]

S令confirmService(com.asc.alibaba.cmweb.service,impl.ConfirmServicelmpl]

?i通SaxbyCoimConflnitializer[com.asc.alibaba.caweb.service,impl.SaxbyConnConfliutializer]

+i。iRecoaServicelmpl[co?.asc.alibaba.cmweb.serviceimpl.IReconfervicelmpl]

jygilike4holly?ood-roma-controller.xal77692117-22上午12:01jingshun.shijs7769211-9-22上午1201jingshan.shijs

同beans7769211-9-22上午12:3jingshunshijs

匚plugin_ilike.xml7960211-10-10下午6:53jingshun.shijs7960211-10~10下午6.53jingshun.shijs

Is)beans7960211-10-10下午6:53jingshunshijs

±15nessageSource

?offeriLikeDataSourceService[comasc.alibaba.hollywood,plugin.ilike.service.OfferiLikeDataSourceService]

。banneriLikeDataSourceService[coa.asc.alibaba.hollywood.plugin,ilike.service.BaimeriLikeDataSourceService]

<infoiLikeD&taSow-ceService[com.asc.alibaba.hollyvood.plugin,ilikeservice.InfoiLikeDataSourceService]

?catiLikeDataSourceService[com.asc.alibaba.Hollywood,plugin,ilike.service.CatiLikeDataSourceService]

?foilOYiLikeDataSourceService[coa.asc.alibaba.hollywood.plugin,ilike.s?rvice.FollowiLikeDataSourceService]

。p4pKeywordsiLikeDataSourceService[con.asc.alibaba,hollywood,plugin,ilike.service.P4pKeywordsiLikeDataSourceService]

5iLikeOldCoMnoikStyleParser[com.asc.alibaba.hollywood,plugixtHikeparser.ILikeOldCommonStyleParser]

?iRecoaDataSourceService[co?,asc.alibaba.hollywood,plugin,ilike.service.IRecomDataSourceService]

QzeroOfferDataSourceService[com.asc.alibaba.hollywood,plugin.ilike.service.ZeroOfferDataSourceService]

通zeroCompanyDataSourceService[co*.asc.alibaba.hollywood,plugin.Hike,service.ZeroCompanyDataSourceService]

QorginalStyleParser[com.ascalibaba.hollywood,plugin.ilike.parserOrgin£LStyleParser]

±通datasourceFactory

可以點具體的屬性定位到eclipseide

可以在文件中右鍵ShowGraph,由此可以看到bean架構圖

|?xstream|

xstreamFactory|

?messageSource<formResolver。iLikeSearchService

?basenames?locations?url

?cookieEnabled

⑤iLikeSearchServiceForBucketTest③cookieSwitch?biddingService

?

url(do@url

?

cookieEnabled

?

bucketTestVersion

?confirmService@SaxbyConnConflnitiallzer0iRecomServicelmpl

?1a0?1

UrUr

Q1

a2

Q3

Q

4

Q

5

1.3Spring3.0的新特性

?核心API更新到Java5.0

Spring順應大趨勢將核心API都更新到Java5.0上,方便開發(fā)者的調用

如BeanFactory的部分方法都有泛型了

令TgetBean(Class<T>requiredType)

TgetBeanfStringnamezClass<T>requiredType)

令Map<String,T>getBeansOfType(Class<T>type)

如:

讓TaskExecutor直接擴展java.util.concurrent.Executor接口,在Spring2.x中TaskExecutor則是一

個獨立的接口。AsyncTaskExecutor擴展于TaskExecutor,支持在一段時間后異步調用某個方法。

新增類型轉換的接口Conversionservice接口,Spring3.0使用類型轉換系統(tǒng)替換原來標磚的

PropertyEditors

?Spring表達式語言

Spring的腳本化配置的功能,Spring提供的腳本成為SpEL,它和統(tǒng)一EL類似,但提供了更為強大

的功能。

<beanid二〃beanl〃class=〃.baobaotao.Beanl”/>

<beanclass=,,.baobaotao.Bean2w>

<propertyname="userName“value=,,#{beanl.userName},//>

<propertyname="password"value="#{beanl.password}"/>

</bean>

以上配置塊中以#{}表示的部分就是使用SpEL表達式的配置,它將調用beanl的相應防范為Bean2

注入值。

?可通過Java類提供I0C配置信息

Spring可以XML配置方式,Spring2.5又增加了基于注解的配置,現在增加了基于java類的配置

方式。

??Configuration

?@Bean

?(izJDependsOn

?@Primary

?@Lazy

?@Import

?@ImportResource

?@Value

packageorg.example.config;

8Configuration

publicclassAppConfig{

private^Value(M1?-:jdbcPrcpertiea.url;-*')StringjdbcUrl;

private@Value(**^ijdbcProperties.username!Stringusername;

private?Value(WMijdbcProperties.passwordF*,)Stringpassword;

@Bean

publicFooServicefooService()(

returnnewFooServicelmpl(fooRepository(>);

9Bean

publicE'ooRepositoryfooRepository(){

returnnewHibernateFooRepository(sessionFactory(>);

9Bean

publicSesaionFactorysessionFactory(>{

//wireupasessionfactory

AnnotationSessionFactoryBeanasFactoryBean-

newAnnotationSessionFactoryBean();

asFactoryfiean.setDataSource(dataSource());

//additionalconfig

returnasFactoryBean.getObject();

BBean

publicOat^Sourcedat4Sourc?()(

returnnewOriverManagerDataSource(jdbcUrlfjsernaae,password);

你需要這樣來配置xml才能開啟

<context:ponent-scanbase-package="org.example.config"/>

<util:propertiesid="jdbcProperties"

location="classpath:org/example/config/perties"/>

或者直接這樣來使用:

publicstaticvoidmain(String[]args){

Applicationcontextctx=new

AnnotationConfigApplicationContext(AppConfig.class);

FooServicefooService=ctx.getBean(FooService.class);

fooService.doStuff();

}

?通用類型轉換系統(tǒng)和屬性格式化系統(tǒng)

?數據訪問層新增OXM功能

?Web層的增強

第二章標簽和注解

2.1標簽大列表

?每個spring文件都有它的xmlSchema聲明

如下截圖:

<?xmlversion=,,l.Or,encoding=rrUTF-d,,?>

<beansxmlns38nhttp://www.springfrrework,org/scheiaa/beans”

xmlns:xsi=//www.w3.orff/2001/XMLSchezna-instance,r

xmlns:aop=,rh11p;//www.springfraznework.org/scheitia/aop"

xmlns:context08rrhttp://www.springfrdzneworK.org/scheiaa/context”

xmlns:tx-tfhttp://wwur.springfraineurork.org/schema/tx"

xsi:schemaLocat.ion="http://www.springfraiaework.org/schema/beans

http://www.spr1ngfr^mework.org/scheitia/beans/spring-beans-2.5?xsd

http://'www.spr1ngtraniework.org/scheiaa/context

http://www.springersiaework.org/schema/context/spr1ng-context-2.5.xsd

http://www.spr1ngtraznework.org/schema/aop

http://www.springtraiaework.org/scheiaa/aop/spring-aop-2.5.xsd

http://www,springfrsitiework.org/scheitia/1K

http://www.spr1ngtraiaework.org/schema/tx/spring-tx-2.5?xsdrr>

I

如果定義的某個命名空間的標簽,但是沒有在頭部聲明,就會報錯。

Schema所有的定義都在這個鏈接上

.springframework/schema/

Indexof/schem<

?ParentDirectory

■aop/

■batch/

■beans/

■cache/

■context/

■data/

?dw-serv"/

?f-s/

■fl巳x/

■(emfire/

■hadoop/

■insight-idk/

?integration/

■6dbe/

■血巳/

■ims/

■lang/

■mobile/

■mvc/

■os^i-coiupendiuin/

■oswi/

■oxm/

■rabbit/

■redis/

?security/

■task/

■tool/

■tx/

■util/

■web-services/

■webfl。閃一config/

■webfl口火/

幾個比較重要的:beanszcontext,aop,tx

XMLSchema的教程請看孫鑫的XML、XMLSchema、XSLT2.0和Xquery

以及,w3/TR/xmlschema-0/

2.1.1BeansnameSpace說明

<beans:bean>和<beans>的區(qū)另ij

比如默認都是security空間時,為了不每次寫bean都增加<secuirity

看這兩個文件

<beansxmlns=nhctp://www.springframeworJ/schema/beans"

xmlns:securiry=Mhtrp://www.springframework.org/scheir.a/security"

xmlns:xsl=Hhttp://www.w3.org/2001/XMLScheina-lnstance"

xsi:5chemaLocation="http://www.springframework.org/schema/beans

http://www.springframework.org/schema/beans/spring-bean3-3.0.xsd

http://www.springframework.org/schema/securicy

hccp://www.springframework.org/schema/security/spring-security-3.0.3.xsdn>

<security:ldap-server/>

</beans>

<beans:beansxmlns=nhtcp://www.springframework.org/schema/securicyn

xmlns:beans=”hsp://www.springfrair;ework.org/schema/beans"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-inscanceM

xsi:schemaLocation=nhttp://www.springframework.org/schema/beans

http://www.springfraineworlc.org/schenia/beans/spring-beans-3.0?xsd

http://www.springframework.org/schema/security

http://www.springframework.org/schema/securicy/spring-security-3.0.3.xsdn>

<ldap-server/>

</beans:beans>

.springframework/schema/beans/spring-beans-3.1.xsd

全局預覽:

▼<xsd:schemaxmlns=*http://ww.springframework.org/schema/beans*xmlns:xsd=/rhttp://ww.w3.01

<xsd:importnamespace="http:〃ww.w3?org/XML/1998/namespacew/>

?<xsd:annotation>。??</xsd:annotation)

<I-basetypes->

?<xsd:complexlypename="identifiedType*abstract=**true*>...</xsd:complexType>

<I-Top-level<beans>tag—>

?<xsd:elementname="beans”>???</xsd:element)

?<xsd:elementname="description">???</xsd:element>

?<xsd:elementname="import”>???</xsd:element>

?<xsd:elementname="alias”>...</xsd:element>

?<xsd:groupname="beanElements”>???</xsd:group>

?<xsd:attributeGroupname=,*beanAttributes,*>...</xsd:attributeGroup>

?<xsd:elementname="meta"type=,vmetaType*>...</xsd:element>

?<xsd:complexlypename="metaType”>...</xsd:complexType>

?<xsd:elementname="bean">???</xsd:element>

?<xsd:elementname="constructor-arg**>...</xsd:element>

?<xsd:elementname="property“type=4*propertylype<?>...</xsd:element)

?<xsd:elementname="qualifier">???</xsd:element>

?<xsd:elementname="attribute“type="metaType">???</xsd:element>

?<xsd:elementname=,vlookup-jnethod*>...</xsd:element>

?<xsd:elementname=,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論