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&
rIn Java/J2EE Application Framework 12.8.2.使用 MultipartResolver 12.8.3.在一个表单中处理 multipart 124 12.9.处理异常 12.10.共同用到的工具 12.10.1.关于 pathmatcher的小故事 13.集成表现层 13.1.简介 13.2.和JSP&JSTL一起使用 Sprin 13.2.1.视图解析器 13.2.2.普通JSP页面和JSTL 22222222 13.2.3.其他有助于开发的标签 13.3. Tiles的使用 128 13.3.1.所需的库文件 128 13.3.2.如何集成 Tiles. 13. 4. Velocity 129 13.4.1.所需的库文件 129 13.4.2.分发器( Dispatcher Servlet)上下文 13. 4.3. Velocity propertie 13.4.4.视图配置 13.4.5.创建 Velocity模版 13.4.6.表单处理 133 13.4.7.总结 13.5.XSLT视图 13.5. 1. My first Words 13.5.2.总结 137 13.6.文档视图(PDF/ Excel) 137 13.6.1.简介 138 13.6.2.配置和安装 13. 7. Tapestry 139 13.7.1.架构 13.7.2.实现 141 13.7.3.小结 14 14.JMS支持 14.1.介绍 14.2.域的统 14.3. JmsTemplate 14.3. 1. ConnectionFactory 14.3.2.事务管理 149 14.3.3. Destination管理 149 14.4.使用 Jms Template 14.4.1.发送消息 14.4.2.同步接收 14.4.3.使用消息转换器 14.4.4. Session CallbackTuProducerCallback 152 15.EJB的存取和实现 1.访问H 153 15.1.1.概念 15.1.2.访问本地的无状态 Session bean(SLSB) 15.1.3.访问远程的无状态 Session bean(SLSB) Version 1.1
1+20%,+Ī$'1$, " " wxňï½¾B1+20%,+ < ½¾ėĘ ` ĊʼnŊ:ī ` ŋŌ0%+B%+*$,:ōŎ ` " í}ňÔĕ ~ " ~ " .ÙD ŏ ÙDݲwŐ D0,2&E ~ " ŀŁnłµ ~ " őÖÙDŒÌ.ÙDݲ ~ "" ÉÊœŔŌ :=ŕ "" Ý21$': "" Ŗą:ģņ "" Ĥĥí}Ý21$' "< £$1*2+- "< Ŗą:ģņ "< IJ µò42'0%+*$, D$,1$+ôŇŗņ "<" £$1*2+-0,0$,+2$' " "<< ŀŁPT " "<C «¬£$1*2+-ĭŘ " "<` ňï½¾ "" "<~ řŚ "< "C śD²ÝŀŁ "< "C - )2,'+ º,@' "C "C řŚ "~ "` ņŜŀŁ 4)3*$1 "~ "` " "` PT.ŝO " "~ Ý%0$'+,- " "~ ĹV < "~ ÓÔ < "~" ōŚ <` < ÙDæç < < < < Ş:şw < <" ÙB'Ý$B01%+$ < <" &&$*+2&)%*+,- < <" ùú¾ < <"" 4$'+2&%+2&ú¾ < << ÙB'Ý$B01%+$ C << Ššń C << ʼnêkŢ C <<" šńÇȵ C <<< D$''2&%119%*.,@*$,%119%* C C Ù#:ţÀ.ÓÔ C" C ĚċÙ# C" C Î C" C ĚċcĴ:ŤťŦD$''2& #$%&òD²D#ô C" C" ĚċŧÍ:ŤťŦD$''2& #$%&òD²D#ô CC D0,2&E 6 Ù%%Ù /0012*%+2& ),%B$, £$,'2&
Spring -java/J2EE Application Framework 15.2.使用 Spring提供的辅助类实现EJB组件 16.通过 Spring使用远程访问和web服务 16.1.简介 157 16.2.使用RMI提供业务 16.2.1.使用 RmiServiceExporter提供业务 16.2.2.客户端连接业务 使用Hessian或Burlap通过HTTP远程调用业务 16.3.1.为 Hessian建立 Dispatcher Servlet 16.3.2.使用 HessianServiceExporter提供你的bean 16.3.3.客户端连接业务 16.3.4.使用 Burlap 16.3.5.在通过Hessian或Burlap输出的业务中应用HTTP基本认证 16.4.使用HTP调用器输出业务 16.4.1.输出业务对象 161 16.4.2.在客户端连接业务 161 16.5.在选择这些技术时的一些考虑 17.使用 Spring邮件抽象层发送 Email 17.1.简介 17.2. Spring邮件抽象结构 17.3.使用 Spring邮件抽象 17.3.1.可插拔的 Mailsender实现 18.使用 Quartz或Time完成时序调度工作 18.1.简介 18.2.使用 Open Symphony Quartz Scheduler 18.2.1.使用 JobDetailBean 18.2.2. 1EMethodInvokingJobDetailFactoryBean 18.2.3.使用 triggers和 SchedulerFactory Bean来包装任务 169 18.3.使用 JDK Timer支持类 170 18.3.1.创建定制的 timers 18.3.2. t MethodInvoking TimerTask FactoryBean 170 18.3.3.包装:使用 TimerFactoryBean来建立task 171 A. Springs beans. dtd 172 B.结束语 B.1.项目手记 B.2.版权声明 180 B.3.翻译团队 B.4.项目进度 Spring Framework开发参考手册
C D0,2&E¿÷:ŨŔ;ÓÔÙ#ũ CC ` ÖŪD0,2&E ŧÍĚċ.$9Ćù C~ ` C~ ` Ī¿÷ūù C ` ĪB2D$,2*$30,+$,¿÷ūù C ` ŬŭŮĦkūù C `" Ĭ$''2%&ů#,1%0ÖŪĬÝÝŧͤūù C `" Ĭ$''2%&¬Ű42'0%+*$,D$,1$+ C `" Ĭ$''2%&D$,2*$30,+$,¿÷Ą:9$%& C `"" ŬŭŮĦkūù ` `"< #,1%0 ` `"C ÖŪĬ$''2%&ů#,1%0űŲ:ūùªĬÝÝ7cųŴ ` `< ĬÝݤµűŲūù ` `< űŲūù^_ ` `< ŬŭŮĦkūù ` `C ŵŶŷŸĐđŹ:wŸ¡ź ` ~ D0,2&EŻû_ĕ ŠB%21 `" ~ `" ~ D0,2&EŻû_ŚV `" ~" D0,2&EŻû_ `< ~" 俎:%21D$&@$,ÓÔ `` ğ%,+žůÝ2B$,ſ}Źƀ¤ƁK `~ `~ 0$&D-B0&- ğ%,+ž D*$@1$, `~ Ù94$+%21#$%& `~ $+@&2&EÙ94$+%21)%*+,-#$%& ` " +,2EE$,'.D*$@1$,)%*+,-#$%&¨ƂOƃù ` " Ù4Ƅ Ý2B$,æç; ~ " «¬a:+2B$,' ~ " $+@&2&EÝ2B$,Ý%')%*+,-#$%& ~ "" ƂOË Ý2B$,)%*+,-#$%&¨¬Ű+%'' ~ / D0,2&Eƅ' 9$%&'@+@ ~ # ŚƆƇ # ¢ # Řƈþÿ #" ƉƊƋƌ #< ¼Ɓ D0,2&E 6 Ù%%Ù /0012*%+2& ),%B$, D0,2&E ),%B$, Z¡¢ 22
前言 即使拥有良好的工具和优秀技术,应用软件开发也是困难重重。如果使用了重量级,难于控制,不能 有效控制开发周期的平台那么就让应用开发变得更为困难。 Spring为已建立的企业级应用提供了一个 轻量级的解决方案,这个方案包括声明式事务管理,通过RM或 webservices远程访问业务逻辑,mail 支持工具以及数据库持久化的多种选择。 Spring还提供了一个MC应用框架,可以透明的把AOP集成到 你的软件中的途径和一个优秀的异常处理体系,包括自动从 Spring特有的异常体系中映射 Spring有潜力成为所有企业应用的一站式(即在一个服务点可以完成所有服务,译者注)选择,同时, Spring也是组件化的,允许你使用它的部分组件而不需牵涉其他部分。你可以使用bean容器,在前台 展现层使用 Struts,你还可以只使用 Hibernate集成部分或是JDBC抽象层. Spring是无侵入性的,意味着 根据实际使用的范围,应用对框架的依赖几乎没有或是绝对最小化的 该文档提供对 Spring特性的参考指南,该文档的编辑目前仍在进行中,如果你有任何的要求或建议,请 把它们发表至用户邮件组或位于 SourceForge项目主页上的论坛 http://www.sf.net/projects/springframework 在我们继续之前,有些许感谢的话要说: Chris bauer( Hibernate项目组成员)准备和调整了 DocBook-XSL软件为了生成 Hibernate参考指南,同时也让我们生成了该文档 1.1
ƍ ƎœƏƐ:ī.ƑƒĐđIªƓ Ɣ{ƕƖƗƗƘĤƙ mƗƚčI ƖŌIz œƛ ij:ƜƝƞƟƠơª ƢvĢƕƖƘD0,2&E ƣ¬Ű:Ƥūčª¿÷mwx ƥƚč:nƦ[ƧIŷx[ƧƂƨþÿÜùú¾I ÖŪĪů$9'$,2*$'ŧÍĚċūùƩ´IB%21 æçīÁÂY¶ģçƪĨ:ƫĂŵŶƘ D0,2&Eă¿÷mwx£ªĸĹIäÁƬÿ:ƭ/ í}Ŋ Ą:Ɠ:ƮƯ.wxƑƒ:ėĘ½¾ưƱI ƂƨMN©D0,2&Eeœ:ėĘưƱĽľƘ D0,2&EœƲƳ}ŖœƤūª:wƴÜƍwxĆùÐäÁſ}ŖœĆù(ƊL ŵŶI ʼnŹI D0,2&EƔ{ũĨ:IƵƶĄ |:ƷIJũyząƸƹÉÊƷIJƘĄäÁ 9$%&ijµ(Ɲ ĻÔĕ D+,+'(ĄăäÁƺ Ĭ29$,&%+$í}ƷIJů{Ù4#û_ĕ D0,2&E{Ťƻ!H:(Ƽƽƾ ƿ¶Óǀ :ǁǂ(ª^ĸĹ:ǃDŽDžœů{dž^LJōĨ: LjņŜ¿÷^D0,2&EeH:Z¡ljNJ(LjņŜ:³´Nj¼(ĤƙĄœƃĥ:Ønjů¬ö( Ǎ ƭ|ǎ ňǏŭŻũůõŌD,*$),E$ŅŒŇ:ǐǑË ++0Ë'5&$+0,ǒ$*+''0,2&E5,%B$, ǓǎǔǕq(œŸƶǖǗ:ǘØǙË,2' #%$,Ĭ29$,&%+$ũ}ǚǛǜ.¤ǝm 4*#6śD²Ɠmg}Ĭ29$,&%+$Z¡ljNJ(ʼnŹƔơǓǎg}mLjņŜ £$,'2& 222
第1章简介 1.1.概览 Spring包含许多功能和特性,并被很好地组织在下图所示的七个模块中。本节将依次介绍每个模块. Spring ORM g Web Web util ties Spring Web Spring AOP MVC Web MvC Framework AOP infrastructure Spring Context DF Excel Spring DAO Application context DAO support JNDI, EJB support& Remoting Spring Core Spring框架概览 Core包是框架的最基础部分,并提供依赖注λ( Dependency Injection)特性来使你可管理Bean容器 功能。这里的基础概念是 BeanFactory,它提供 Factory模式来消除对程序性单例的需要,并允许你 从程序逻辑中分离出依赖关系的配置和描述。 构建于 Beans包上 Context包,提供了一种框架式的Bean访问方式,有些象JNI注册。 Context包的特 性得自 Beans包,并添加了文本消息的发送,通过比如资源串,事件传播,资源装载的方式和 Context 的透明创建,如通过 Servlet容器。 DA0包提供了JDBC的抽象层,它可消除冗长的JDBC编码和解析数据库厂商特有的错误代码。该包也提 供了一种方法实现编程性和声明性事务管理,不仅仅是针对实现特定接口的类,而且对所有的POJ0。 ORM包为流行的关系一对象映射APIs提供了集成层,包括JD0, Hibernate和 iBatis。通过ORM包,你可 与所有 Spring提供的其他特性相结合来使用这些对象/关系映射,如前边提到的简单声明性事务管理 Spring的AOP包提供与AO联盟兼容的面向方面编程实现,允许你定义,如方法拦截器和切点,来干净 地给从逻辑上说应该被分离的功能实现代码解耦。使用源码级的元数据功能,你可将各种行为信息合 并到你的代码中,有点象.Net的 attribute Spring的web包提供了基本的面向Web的综合特性,如 Multipart功能,使用 Servlet监听器的 Context 的初始化和面向Web的 Applicatin Context。当与 WebWork或 Struts一起使用 Spring时,这个包使 Spring可与其他框架结合 Version 1.1
D0,2&EƂǞƶƫ.eHIǟßǠƐĴũǡŗŁŖǢ:ǣxĭǤƘcǥǦę ǧxĭǤ D0,2&EĸĹ ,$Ƃ{ĸĹ:LJ78ƷIJI ǟ¿÷ !ò4$0$&@$&*- &ǒ$*+2&ôeH¨ Ąäú¾#$%&ijµ Ƙ ŷǨ:78 Î{#$%&)%*+,-I|¿÷)%*+,-ĭܨšǩ^ÍƀHïð:ąØI ǟƵƶĄ ©ÍƀƩ´IJǪŲŋƱ:PT.ǫîƘ V¬Ō#$%&'ƂŇ&+$3+ƂI¿÷mwĂĸĹÜ:#$%&Ěċ[ÜI œŸ_ÙĀ4 Ƙ&+$3+Ƃ:e HvM#$%&'ƂIǟĿmņcšń: ŠIÖŪǬĤǭI ǮIOǯ:[Ü.&+$3+ :Ƭÿ«¬IĤÖŪD$,1$+ijµƘ 4/ Ƃ¿÷mÙ4#:û_ĕI|äšǩǰDZ:Ù4#³¯.nłY¶ģDzeœ:ĝĞ®¯Ƙ LjƂƔ¿ ÷mwĂ[\ÓÔ³ÍH.þÿHùú¾Izdzdz{Ǵ^ÓÔeakl:;I yǵ^Ŗœ: Ù Ƙ ĪƂǶ:ŋƱǷ^_Ľľ/'¿÷mí}ĕIƂƨÙ4 IĬ29$,&%+$.2#%+2'Ƙ ÖŪ ĪƂIĄä AŖœD0,2&E¿÷:ÉÊeHǸŚJ¨ ŷŸ^_ŋƱĽľI Ĥǹ¿Ŋ:ïþÿHùú¾ Ƙ D0,2&E:/ Ƃ¿÷A/ ǺǻǼij:Ì[̳ÍÓÔIƵƶĄabI Ĥ[\įݵ.ÏÐI¨ǽǾ Ĵø©Ʃ´ŇǙªLjßIJǪ:ÓÔ®¯nǿƘ ¯č:âY¶IĄäǦȀĂŃńJ ǟŊĄ:®¯IœÐ_Ā$+:%++,29+$Ƙ D0,2&E:º$9Ƃ¿÷m7c:̺$9:ȁJeHIĤ1+20%,+I D$,1$+Ȃȃµ:&+$3+ :ȄȅĨ.̺$9:/0012*%+2& &+$3+Ƙ ȆAº$9º,ůD+,+'wŐ D0,2&EŹIŷxƂ D0,2&EäAÉÊĸĹŚJƘ £$,'2&
简介 Spring的 Web mvc包提供了面向Web应用的 Model-view- controller实现。 Spring的MC实现不仅仅是 种实现,它提供了一种 domain model代码和 web form的清晰分离,这使你可使用 Spring框架的所有其 他特性,如校验. 1.2.使用场景 利用积木方式来描述你在各种场合使用 Spring的情况,从 Applet一直到完整的使用 Spring的事务管理 功能和Web框架的企业应用。 Velocity, XSLT, PD Spring Web MVc WebApplication context providing e.g. messaging Spring Web Declarative transaction management for POJOs Spring Context Custom business logic Spring AOP Spring ORM Hibernate mappings Custom Hibernate dAos Spring Core Spring DAO Servlet Container(Tomcat /Jetty) 典型的完整 Spring Web应用 一个典型的使用大部分 Spring特性的Web应用。使用 TransactionProxy Factory Beans,Web应用是完全事务性 的,就像使用EJB提供的那种容器管理的事务一样.所有的你的自定义业务逻辑可以通过简单的POJ0 来实现,并通过 Spring的 Dependency Injection容器进行管理。其他的服务,如发送emai1和校验,独 立于Web层,使你能够决定在哪里执行校验规则。 Spring的ORM支持包含了 Hibernate,JD0和 iBatis 。如使用 HibernateDaoSupport,你可复用已经存在的 Hibernate映射。从 Controller无缝整合web层和领 域模型,消除对 Action Forms的需要和其他转换HTP参数为领域模型的类。 Version 1.1
D0,2&E:º$9 £Ƃ¿÷m̺$9ª:@$16£2$6&+,11$,ÓÔƘ D0,2&E:£ÓÔzdzdz{w ĂÓÔI|¿÷mwĂ@B%2& B@$1®¯.$9 5,B:ȇȈIJǪI ŷ Ąä D0,2&EĸĹ:ŖœÉ ÊeHIĤ¸¹ fg ÛȉȊ[ܨǫîĄȀĂJ D0,2&E:ȋȌI ©/001$+wȍŊſǝ: D0,2&E:ùú¾ .º$9ĸĹ:ƤūªƘ ȎÆ:ſǝD0,2&E º$9ª wxȎÆ: ȏƷIJD0,2&EeH:º$9ªƘ Ý,%&'%*+2&,3-)%*+,-#$%&'I º$9ª{ſȐùH :IƠȑ Ù#¿÷:ƞĂijµú¾:ùwȒȓ Ŗœ:Ą:MabūùƩ´äÁÖŪï: Ù ¨ÓÔIǟÖŪD0,2&E:4$0$&@$&*- &ǒ$*+2&ijµ¼ú¾ƘÉÊ:ĆùIĤ Š$B%21.¸¹IȔ ŰŌº$9ĕI ĄȕƦaȖǨĠ¸¹ȗȘƘ D0,2&E: ĪæçƂǞmĬ29$,&%+$IÙ4 .2#%+2' ƘĤ Ĭ29$,&%+$4%D00,+I ĄäșƣȚţ:Ĭ29$,&%+$ĽľƘ©&+,11$,ŤțǝJ$9ĕ.Ȝ ŞĭÆI šǩ^/*+2&),B':ąØ.ÉÊÇÈĬÝÝZYȜŞĭÆ:;Ƙ £$,'2&