版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
最新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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勤工助學工作總結15篇
- 酒店實習報告模板錦集10篇
- 愛話題作文15篇
- 紋身操作手法課程設計
- 高中信息技術 鍵盤和鍵盤操作教案
- DB2301T 193-2024林糧間作技術規(guī)程
- 動脈導管未閉課件
- 借證協(xié)議書(2篇)
- 兒童故事版權使用合同(2篇)
- 婦幼保健計劃生育服務中心傳染病衛(wèi)生應急預案
- DB63-T 1672-2018+瀝青路面整治工程新舊路面聯(lián)結層技術規(guī)范
- 基于CAN通訊的儲能變流器并機方案及應用分析報告-培訓課件
- 園藝療法共課件
- 布氏、韋氏、洛氏硬度換算表
- 鋼筋混凝土地下通道課程設計
- 韓流對中國文化的影響課件
- 檢驗檢測服務公司市場營銷計劃
- 醫(yī)務人員外出進修流程圖
- DB32∕T 2349-2013 楊樹一元立木材積表
- 昌樂二中271高效課堂培訓與評價ppt課件
- 豬場名詞及指標講義
評論
0/150
提交評論