S pring javalj2ee Application Framework Spr ing framework开发参考手册 Version 1.1 (Pub l ic Review Translator: Spr ing中文论坛 Spring参考手册由众多 Spring爱好者共同协作完成.本文档的翻译是在网络上协作进行,也会不断根据 Spring文 档的升级进行逐步更新一在线文档提供此文档的目的是为了减缓学习 Spring的曲线,更好的让优秀的技术扩大 在中文世界的使用。该文档并非可以代替原文档使用,我们建议所有有能力的读者都直接阅读英文原文。如果 您对翻译有所异议,请反馈给Sρring中文论坛Thttp://springjactiongroupηet]项目控制 https://jactiongroup2.dev.javanet
! " # $% & '()* +,- ./01234567(89:;<=>?@34ABC DEFGHI ( 89JKABLMNO P =Q(8 RST(89U9<VWXYZ[ 9\QCN/9]^_9`abc ='(de9fgh i(8jklmnop(8fgCqrstuvvwx9y0z{|}y ~(p(h :;vut '()*%%& % % U& %%& % "" %
目录 前言 1.简介 1.1.概览 i112 1.2.使用场景 2.项目背景 2.1.反向控制(IoC)/依赖注入 Beans, Bean Factory HApplicationContext 3.1.简介 3.2. BeanFactory和 BeanDefinitions-基础 3. 2.1. BeanFactory 3.2.2. BeanDefinition 3.2.3.bean的类 666789 3.2.4.Bean的标志符(id与name) 3.2.5. Singleton的使用与否 3.3.属性,合作者,自动装配和依赖检查 3.3.1.设置bean的属性和合作者 3.3.2.深入Bean属性和构造函数参数 3.3.3.方法注入 3.3.4.使用 depends-on 3.3.5.自动装配协作对象 3.3.6.依赖检查 3.4.自定义bean的本质特征 3.4.1.生命周期接口 3.4.2.了解自己 3.4.3. FactoryBean 3.5.子bean定义 3.6. BeanFactory之间的交互 3.6.1.获得一个 Factory Bean而不是它生成的bean 24 3.7.使用 BeanPostprocessors定制bean 3.8.使用 BeanFactory Postprocessors定制bean工厂 3.8. 1. Property PlaceholderConfigurer 3.8. 2. PropertyOverride Configurer 3.9.注册附加的定制 PropertyEditor 3.10.介绍 ApplicationContext 3.11. Application Context中增加的功能 3.11.1.使用 Message Source 3.11.2.事件传递 3.11.3.在 Spring中使用资源 3.12.在 ApplicationContext中定制行为 3.12.1. Application ContextAware标记接口 3.12.2. Bean Post Processor 3. 12.3. Bean Factory PostProcessor 31 3.12.4 31 3.13.注册附加的定制 Property Editors 31 Spring Framework开发参考手册
U 222 C ! C " #$%&'( #$%&)%*+,-./0012*%+2&&+$3+ ` " ` " #$%&)%*+,- . #$%&4$52&2+2&' 6 78 ` " #$%&)%*+,- ` " #$%&4$52&2+2& ~ "" 9$%&:; "< #$%&:=>? 2@A&%B$ "C D2&E1$+&: AF "" GHIJKLIMNOP.QR "" ST9$%&:GH.JKL "" U!#$%&GH.VWXYZY " """ [\ ! ` ""< @$0$&@'6& ""C MNOP]K^_ ""` QR "< Mab9$%&:cdef "< ghijkl "< mnMo "<" )%*+,-#$%& "C p9$%&ab "` #$%&)%*+,-qr:st " "` uvwx)%*+,-#$%&yz{|g}:9$%& < "~ #$%&'+0,*$'','a9$%& < " #$%&)%*+,-'+0,*$'','a9$%& C " ,0$,+-1%*$1@$,&52E,$, C " ,0$,+- $,,2@$&52E,$, ` " :a,0$,+-@2+, ` " /0012*%+2&&+$3+ ~ " /0012*%+2&&+$3+: ~ " $''%E$D,*$ ~ " "" D0,2&E " " /0012*%+2&&+$3+a " " /0012*%+2&&+$3+/%,$=kl " " #$%&'+,*$'', " "" #$%&)%*+,-'+,*$'', " "< ,0$,+-1%*$1@$,&52E,$, " "" :a,0$,+-@2+,' " D0,2&E ),%B$, Z¡¢ 22
rIn Java/J2EE Application Framework 3.14.用方法调用的返回值来设置bean的属性 3.15.从一个web应用创建 ApplicationContext 3.16.粘合代码和罪恶的 singleton 3. 16. 1. ESingletonBean FactoryLocator FlContextSingletonBeanFactoryLocator 4.属性编辑器,数据绑定,校验与 BeanWeapper(Bean封装).. 4.1.简介 4.2.使用 DataBinder进行数据绑定 4.3.Bean处理与 BeanWrapper 4.3.1.设置和提取属性以及嵌套属性 4.3.2.内建的( Property Editors)和类型转换 4.3.3.其他特性 5. Spring AoP: Spring之面向方面编程 5.1.概念 5.1.1.AOP概念 5.1.2. Spring AOP的功能 40 5.1.3. Spring中AOP代理 5.2. Spring的切入点 5.2.1.概念 5.2.2.切入点的运算 5.2.3.实用切入点实现 5.2.4.切入点超类 5.2.5.自定义切入点 5.3. Spring的通知类型 444 5.3.1.通知的生命周期 44444 5.3.2. Spring中通知类型 5.4. Spring中的 advisor 5.5.用 Proxy Factory Bean创建AOP代理 5.5.1.基本概要 5.5.2. JavaBean的属性 5.5.3.代理接口 5.5.4.代理类 5.6.便利的代理创建方式 5. 6. 1. TransactionProxy Factory Bean 5.6.2.EJB代理 5.7.使用 ProxyFactory以编程的方式创建AO代理 5.8.操作被通知对象 5.9.使用“ autoproxy”功能 5.9.1.自动代理的bean定义 5.9.2.使用元数据驱动的自动代理 5.10.使用 Targetsource 5.10.1.可热交换的目标源 5.10.2.支持池的目标源 5.10.3. Prototype目标源 5.11.定义新的通知类型 5.12.进一步的资料和资源 3.路标 22 集成 AspectJ 6.1.概述 Spring Framework开发参考手册
"< [\¤:¥¦§¨ST9$%&:GH " "C ©wx$9ª«¬/0012*%+2&&+$3+ "" "` J®¯.°±:'2&E1$+& "" "` D2&E1$+&#$%&)%*+,-²*%+,.&+$3+D2&E1$+&#$%&)%*+,-²*%+, "< < GH³´µIY¶·aI¸¹A#$%&º$%00$,#$%&»O "C < "C < 4%+%#2&@$,¼Y¶·a "C <" #$%&½¾A#$%&º,%00$, "C <" ST.¿ÀGHÁÂÃÄGH "` <" Ŭ:,0$,+-@2+,'.;ÆÇÈ "~ <"" ÉÊeH " C D0,2&E / Ë D0,2&EqÌ[Ì³Í " C Î " C / Î " C D0,2&E / : < C" D0,2&E/ ®¾ < C D0,2&E:Ï!Ð < C Î < C Ï!Ð:ÑÒ < C" ÓÏ!ÐÓÔ < C< Ï!ÐÕ; << CC MabÏ!Ð << C" D0,2&E:Ö×;Æ << C" Ö×:ghij << C" D0,2&EÖ×;Æ <C C< D0,2&E:%@2', < CC ,3-)%*+,-#$%&«¬/ ®¾ C CC 7c Ø C CC Ù%%#$%&:GH C CC" ®¾kl C CC< ®¾; C C` ÚÛ:®¾«¬[Ü C C` Ý,%&'%*+2&,3-)%*+,-#$%& C" C` Ù# ®¾ C< C~ ,3-)%*+,-Á³Í:[Ü«¬/ ®¾ C< C ÞKßÖ×^_ C< C à%+0,3-á CC C MN®¾:9$%&ab C` C âY¶ãN:MN®¾ C~ C Ý%,E$+D,*$' C C äåsÈ:= C C æçè:= ` C" ,++-0$= ` C abé:Ö×;Æ ` C ¼wê:ë. ` C" ì= ` ` í}/'0$*+Ù `" ` î `" D0,2&E 6 Ù%%Ù /0012*%+2& ),%B$, D0,2&E ),%B$, Z¡¢ 222
Spring -java/J2EE Application Framework 6.2.使用 Spring loci配置 AspectJ 6.2.1.“单例 6.2.2.非单例 aspect 6.2.3.3.4转向( Gotchas) 8666 6.3.使用 AspectJ切点定位 Spring的建议 6.4. Spring提供给 Aspect]的 aspect 7.事务管理 7.1. Spring事务抽象 7.2.事务策略 7.3.编程式事务管理 7.3.1.使用 TransactionTemplate 7.3.2.使用 PlatformTransactionManager 7.4.声明式事务管理 71 7.4.1. Bean Name AutoProxy Creator,另一种声明方式. 7.5.编程式还是声明式事务管理 74 7.6.你需要应用服务器管理事务吗? 7.7.公共问题 8.源代码级的元数据支持 8.1.源代码级的元数据 8.2. Spring的元数据支持 8.3.集成 8.4.元数据和 Spring aoP自动代理 8.4.1.基础 8.4.2.声明式事务管理 8.4.3.缓冲池技术 8.4.4.自定义的元数据 8.5.使用 attribute尽可能减少 MVC web层配置 81 8.6.元数据 attribute的其它使用 8.7.增加对其它的元数据API的支持 9.DAO支持 9.1.简介 85 9.2.一致的异常层次 9. 致的DAO支持抽象类 10.使用JDBC进行数据访问 10.1.简介 10.2.使用JDBC核心类控制基本的JDBC处理和错误处理 10.2. 1. JdbcTemplate 8888 10.2.2.数据源 10.2. 3. SQLExceptionTranslator 10.2.4.执行 Statement 10.2.5.执行查询 10.2.6.更新数据库 10.3.控制如何连接数据库 10.3. 1. DataSourceUtils 10.3. 2. SmartDataSource 10.3.3. AbstractDataSource 10.3. 4. Single ConnectionDataSource 3. 5. Driver ManagerDataSource 3. 6. DataSourceTransactionmanager Spring Framework开发参考手册
` D0,2&E PT/'0$*+Ù `" ` àïðá%'0$*+ `" ` ñïð%'0$*+ `< `" "< Çòó+*%'ô `< `" /'0$*+ÙÏÐaõD0,2&E:¬ö `< `< D0,2&E¿÷ø/'0$*+Ù:%'0$*+ `C ~ ùú¾ `` ~ D0,2&Eùû_ `` ~ ùüý `` ~" ³ÍÜùú¾ ` ~" Ý,%&'%*+2&Ý$B01%+$ ~ ~" 1%+5,BÝ,%&'%*+2&%&%E$, ~ ~< þÿÜùú¾ ~ ~< #$%&Ā%B$/+,3-,$%+,IāwĂþÿ[Ü ~ ~C ³ÍÜă{þÿÜùú¾ ~< ~` ĄąØªĆùµú¾ùćĈ ~< ~~ ĉĊċČ ~< ®¯č:âY¶æç ~C ®¯č:âY¶ ~C D0,2&E:âY¶æç ~` " í}Ù%%,+% BB&' /++,29+$' ~~ < âY¶.D0,2&E / MN®¾ ~ < 78 ~ < þÿÜùú¾ ~ <" ĎďèĐđ ~ << Mab:âY¶ C %++,29+$ĒäēĔ£ $9ĕPT ` âY¶%++,29+$:É| " ~ ^É|:âY¶/:æç < 4/ æç C C wĖ:ėĘĕę C " wĖ:4/ æçû_; C Ù4#¼Y¶Ěċ ~ ~ Ù4#ěĜ;7c:Ù4#½¾.ĝн¾ ~ Ù@9*Ý$B01%+$ ~ Y¶ ~ " Dğ²3*$0+2&Ý,%&'1%+, < ĠD+%+$B$&+ C ĠRġ ` ĢéY¶ģ " ĤĥĦkY¶ģ " 4%+%D,*$ħ+21' " DB%,+4%+%D,*$ "" /9'+,%*+4%+%D,*$ "< D2&E1$&&$*+2&4%+%D,*$ "C 4,2$,%&%E$,4%+%D,*$ "` 4%+%D,*$Ý,%&'%*+2&%&%E$, D0,2&E 6 Ù%%Ù /0012*%+2& ),%B$, D0,2&E ),%B$, Z¡¢ 2
rIn Java/J2EE Application Framework 10.4.JDBC操作的Java对象化 10.4.1. SqlQuery 10.4.2. 10. 4.3. Sqlupdate 10. 4. StoredProcedure 10. 4.5. SqlFunction 11.使用ORM工具进行数据访问 11.1.简介 11. 2. Hibernate 11.2.1.资源管理 11.2.2.在 Application Context中的Bean声明 11.2.3.反向控制:模板和回调的使用 11.2.4.利用AO拦截器( Interceptor)取代 Template 11.2.5.编程式的事务划分 11.2.6.声明式的事务划分 101 11.2.7.事务管理策略 103 11.2.8.使用 Spring管理的应用Bean 11.2.9.容器资源vs本地资源 11.2.10.举例 11.3.JD0 4. iBATIS 11.4.1.1.3.x和2.0的概览和区别 11.4.2.创建 Sqlmap 11.4.3.使用 SqlmapDaoSupport .108 11.4.4.事务管理 109 12.Web框架 110 12.1.Web框架介绍 110 12.1.1.MC实现的可扩展性 110 12.1.2. Spring mvc框架的特点 111 12.2.分发器( Dispatcher Servlet) 12.3.控制器 12.3 1. AbstractController Fn WebContentGenerator 12.3.2.其它的简单控制器 15 12.3.3. MultiActionController 12.3.4.命令控制器 12.4.处理器映射 12.4.1. BeanNameUrlHandler mapping 12. 4.2. SimpleUrlHandlerMapping 118 12.4.3.添加 Handler Interceptors 119 12.5.视图与视图解析 120 12.5.1. ViewResolvers 120 12.6.使用本地化信息 121 12. 6. 1. AcceptHeaderLocaleresolver 122 12. 6.2. CookieLocaleResolver 12.6.3. SessionLocaleResolver 122 12. 6.4. Locale Change Interceptor 12.7.主题使用 12.8. Spring对 multipart(文件上传)的支持 12.8.1.介绍 Version 1.1
< Ù4#ÞK:Ù%%^_Ĩ < Dĩ1ğ$,- < %002&EDĩ1ğ$,- <" Dĩ1ħ0@%+$ " << D+,$@,*$@,$ " <C Dĩ1)&*+2& C Īī¼Y¶Ěċ ` ` Ĭ29$,&%+$ ~ ú¾ ~ /0012*%+2& &+$3+:#$%& þÿ ~ " Ë ĭĮ.¦¤: < Û/ įݵ&+$,*$0+,À®Ý$B01%+$ C ³ÍÜ:ùıIJ ` þÿÜ:ùıIJ ~ ùú¾üý " D0,2&Eú¾:ª#$%& C ijµ ' cĴ ` ĵð ` " Ù4 ` < 2#/ÝD ` < "3.: .Ķķ ~ < «¬Dĩ1%0 ~ <" Dĩ1%04%D00,+ << ùú¾ º$9ĸĹ º$9ĸĹ £ÓÔ:äĺĻH D0,2&E £ĸĹ:eÐ IJ µò42'0%+*$,D$,1$+ô " µ " " /9'+,%*+&+,11$, . º$9&+$&+ó$&$,%+, < " É|:ïµ C "" 1+2/*+2&&+,11$, C "< hļµ ~ < ½¾µĽľ ~ < #$%&Ā%B$ħ,1Ĭ%&@1$,%002&E ~ < D2B01$ħ,1Ĭ%&@1$,%002&E <" ĿĬ%&@1$,&+$,*$0+,' C ŀŁAŀŁnł C £2$Ī$'1$,' ` cĴĨŃń ` /**$0+Ĭ$%@$,²*%1$Ī$'1$, ` 2$²*%1$Ī$'1$, `" D$''2&²*%1$Ī$'1$, `< ²*%1$%&E$&+$,*$0+, ~ ŅČ " D0,2&E^B1+20%,+òņŇô:æç " " D0,2&E 6 Ù%%Ù /0012*%+2& ),%B$, £$,'2&