Spring源码大总结资料_第1页
Spring源码大总结资料_第2页
Spring源码大总结资料_第3页
Spring源码大总结资料_第4页
Spring源码大总结资料_第5页
已阅读5页,还剩242页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

最新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事与件发布181

3.8spEL表达式190

3.9IOC常见interface详解190

第四章SpringAOP193

4.1AOP的术语194

4.2动态代理195

4.2.1JDK动态代理195

4.2.2CGLIB动态代理199

4.2.3AOP联盟200

4.3创建增强类200

4.4创建切面212

4.4.1切点类型213

4.4.2切面类型213

4.5自动创建代理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容器负责依赖类之间的创建、拼接、管理、获取等工作,

BeanFactory接口是Spring框架的核心接口,它实现了容器许多核心的功能。

Context模块构建于核心模块之上,扩展了BeanFactory的功能,添加了il8n国际化、

Bean生命周期控制、框架事与件体系、资源加载透明化等多项功能。该模块还提供了许多

企业级服务的支持,如邮件服务、任务调度、JNDI定位、EJB集成、远程访问等。

Applicationcontext是Context模块的核心接口。

表达式语言模块是统一表达式语言的一个扩展,该表达式语言用于查询和管理运行期

的对象,支持设置和获取对象属性,调用对象方法、操作数组、整合等。还提供了逻辑表

达式运算、变量定义等功能。

•AOP

AOP是进行横切逻辑编程的思想,它开拓了考虑问题的思路。在AOP模块里,Spring

提供了满足AOPAlliance规范的实现,还整合了Aspectl这种AOP语言级的框架。在Spring

里实现AOP编程拥有众多的选择。Java5.0java.lang.instrument,允许启动时启用一个代理类,

通过该代理类在运行期修改类的字节码,改变一个类的功能,实现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回区)

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?<!--框架启动的事件监听器->

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上,方便开发者的调用

如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使用类型转换系统替换原来标砖的

PropertyEditors

•Spring表达式语言

Spring的脚本化配置的功能,Spring提供的脚本成为SpEL,它和统一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();

}

•通用类型转换系统和属性格式化系统

•数据访问层新增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>的区另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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论