logo资料库

spring 开发 参考文献.pdf

第1页 / 共88页
第2页 / 共88页
第3页 / 共88页
第4页 / 共88页
第5页 / 共88页
第6页 / 共88页
第7页 / 共88页
第8页 / 共88页
资料共88页,剩余部分请下载后查看
OpenDoc Series’ Spring 开发指南 V0.6 预览版 作者:夏昕 xiaxin(at)gmail.com So many open source projects. Why not Open your Documents? J
SpringFrameWork Developer 参与人员: 作者 夏昕 (at) 为 email @ 符号 发布记录 版本 0.5 0.6 日期 2004.6.1 2004.9.1 ’s Guide Version 0.6 文档说明 联络 xiaxin(at)gmail.com 作者 夏昕 夏昕 说明 第一预览版 补充“持久层”内容。 OpenDoc 版权说明 本文档版权归原作者所有。 在免费、且无任何附加条件的前提下,可在网络媒体中自由传播。 如需部分或者全文引用,请事先征求作者意见。 如果本文对您有些许帮助,表达谢意的最好方式,是将您发现的问题和文档改进意见及时反馈给 作者。当然,倘若有时间和能力,能为技术群体无偿贡献自己的所学为最好的回馈。 另外,笔者近来试图就日本、印度的软件开发模式进行一些调研。如果诸位可以赠阅日本、印度 软件研发过程中的需求、设计文档以供研究,感激不尽! September 2, 2004 So many open source projects. Why not Open your Documents?
SpringFrameWork Developer ’s Guide Version 0.6 Spring 开发指南 前言 2003 年年初,笔者在国外工作。其时,一位与笔者私交甚好的印度同事 Paradeep 从 公司离职去斯坦福深造,临走送给笔者一本他最钟爱的书籍作为纪念。 工作间隙,时常见到他摩娑此书,摇头不止(印度人习惯和中国人相反,摇头代表肯定、 赞同,相当于与中国人点头。笔者刚开始与印度同僚共事之时,每每组织项目会议,一屋子 人频频摇头,让笔者倍感压力……J)。 下班后,带着好友离职的失落,笔者夹着这本书走在回家的路上,恰巧路过东海岸,天 色依然明朗,随意坐上了海边一家酒吧的露天吧台,要了杯啤酒,随手翻弄着书的扉页,不 经意看见书中遍布的钢笔勾画的线条。 “呵呵,Paradeep 这家伙,还真把这本书当回事啊”,一边笑着,一边摊开了此书, 想看看到底是怎样的书让这样一个聪明老练的同事如此欣赏。 从此开始,这本书伴随笔者度过了整整一个月的业余时间…….. 这本书,也就是出自 Rod Johnson 的: 《Expert One-on-One J2EE Design and Development》 此书已经由电子工业出版社出版,译版名为《J2EE 设计开发编程指南》。 半年后,一个新的 Java Framework 发布,同样出自 Rod Johnson 的手笔,这自然 引起了笔者极大的兴趣,这就是 SpringFramework。 SpringFramework Development 一书中所阐述的设计思想的具体实现。在 One-on-One 一书中,Rod Johnson 倡导 J2EE 实用主义的设计思想,并随书提供了一个初步的开发框架实 现 (interface21 开发包)。而 SpringFramework 正是这一思想的更全面和具体的体现。 Rod Johnson 在 interface21 开发包的基础之上,进行了进一步的改造和扩充,使其发展 为一个更加开放、清晰、全面、高效的开发框架。 本文正是针对 SpringFramework 的开发指南,讲述了 SpringFramework 的设计思 想以及在开发中的实际使用。同时穿插了一些笔者在项目实作中的经验所得。 实 际 上 是 Expert One-on-One J2EE Design and September 2, 2004 So many open source projects. Why not Open your Documents?
SpringFrameWork Developer ’s Guide Version 0.6 Spring 初探.......................................................................................................................5 准备工作 ..........................................................................................................................5 构建 Spring 基础代码.....................................................................................................6 Spring 基础语义............................................................................................................12 Dependency Injection.............................................................................................12 依赖注入的几种实现类型 ........................................................................................14 Type1 接口注入.................................................................................................15 Type2 构造子注入.............................................................................................15 Type3 设值注入.................................................................................................15 几种依赖注入模式的对比总结 ............................................................................16 Spring Bean 封装机制...............................................................................................17 Bean Wrapper........................................................................................................17 Bean Factory..........................................................................................................18 ApplicationContext .............................................................................................21 Web Context...........................................................................................................26 Spring 高级特性............................................................................................................27 Web 应用与 MVC.........................................................................................................27 Spring MVC.............................................................................................................28 Spring MVC 指南..............................................................................................28 基于模板的 Web 表示层技术..............................................................................42 Web 应用中模板技术与 JSP 技术的对比........................................................47 输入验证与数据绑定 ............................................................................................49 异常处理 ................................................................................................................60 国际化支持 ............................................................................................................62 数据持久层 ....................................................................................................................66 事务管理 ....................................................................................................................66 持久层封装 ................................................................................................................70 JDBC......................................................................................................................70 Hibernate in Spring..........................................................................................78 ibatis in Spring ..................................................................................................85 以下内容待整理后发布.................................................................................................88 远程调用 ........................................................................................................................88 AOP................................................................................................................................88 September 2, 2004 So many open source projects. Why not Open your Documents?
SpringFrameWork Developer ’s Guide Version 0.6 Spring 初探 开始 Spring 研究之前,先让我们来看一个 1 分钟上手教程。 Quick Start! 准备工作 下载 SpringFramework的最新版本,并解压缩到指定目录。 在 IDE 中新建一个项目,并将 Spring.jar 将其相关类库加入项目。 笔者所用 IDE 为 Eclipse,类库配置如下: Spring 采用 Apache common_logging,并结合 Apache log4j 作为日志输出组件。为了在 调试过程中能观察到 Spring 的日志输出,在 CLASSPATH 中新建 log4j.properties 配置文件, 内容如下: log4j.rootLogger=DEBUG, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%c{1} - %m%n 配置完成后,项目结构如下图所示: September 2, 2004 So many open source projects. Why not Open your Documents?
SpringFrameWork Developer ’s Guide Version 0.6 构建 Spring 基础代码 示例基础代码包括: 1. Action 接口: Action 接口定义了一个 execute 方法,在我们示例中,不同的 Action 实现提供了各自的 execute 方法,以完成目标逻辑。 public interface Action { } public String execute(String str); 2. Action 接口的两个实现 UpperAction、LowerAction private String message; September 2, 2004 So many open source projects. Why not Open your Documents? return message; public void setMessage(String string) { private String message; public String getMessage() { public class UpperAction implements Action { } message = string; } } } UpperAction将其message属性与输入字符串相连接,并返回其大写形式。 public class LowerAction implements Action { public String execute(String str) { return (getMessage() + str).toUpperCase();
SpringFrameWork Developer ’s Guide Version 0.6 public void setMessage(String string) { public String getMessage() { return message; } message = string; } } } LowerAction将其message属性与输入字符串相连接,并返回其小写形式。 public String execute(String str) { return (getMessage()+str).toLowerCase(); 3. Spring 配置文件(bean.xml) Spring Quick Start HeLLo (请确保配置bean.xml位于工作路径之下,注意工作路径并不等同于CLASSPATH ,eclipse 的默认工作路径为项目根路径,也就是.project文件所在的目录,而默认输出目录/bin是项目 CLASSPATH的一部分,并非工作路径。) 4. 测试代码 public void testQuickStart() { ApplicationContext ctx= new FileSystemXmlApplicationContext("bean.xml"); Action action = (Action) ctx.getBean( System.out.println(action.execute( } "TheAction"); "Rod Johnson")); 可以看到,上面的测试代码中,我们根据"bean.xml"创建了一个ApplicationContext实 例,并从此实例中获取我们所需的Action实现。 September 2, 2004 So many open source projects. Why not Open your Documents?
SpringFrameWork Developer ’s Guide Version 0.6 运行测试代码,我们看到控制台输出: …… HELLO ROD JOHNSON 我们将bean.xml中的配置稍加修改: 再次运行测试代码,看到: …… hello rod johnson 示例完成! 很简单的示例,的确很简单,甚至简单到了不够真实。 不过,不知大家从这个最简单的例子中看出了什么? 真的只是打印输出了两行不痛不痒的问候语? 仔细观察一下上面的代码,可以看到: 1. 我们的所有程序代码中(除测试代码之外),并没有出现Spring中的任何组件。 2. UpperAction和LowerAction的Message属性均由Spring通过读取配置文件(bean.xml)动 态设置。 3. 客户代码(这里就是我们的测试代码)仅仅面向接口编程,而无需知道实现类的具体名称。同时, 我们可以很简单的通过修改配置文件来切换具体的底层实现类。 上面所说的这些,对于我们的实际开发有何帮助? 首先,我们的组件并不需要实现框架指定的接口,因此可以轻松的将组件从Spring中脱离,甚 至不需要任何修改(这在基于EJB框架实现的应用中是难以想象的)。 其次,组件间的依赖关系减少,极大改善了代码的可重用性。 Spring的依赖注入机制,可以在运行期为组件配置所需资源,而无需在编写组件代码时就加以 指定,从而在相当程度上降低了组件之间的耦合。 上面的例子中,我们通过Spring,在运行期动态将字符串 “HeLLo” 注入到Action实现类的 Message属性中。 现在假设我们回到传统的实现模式,应该如何处理? 一般的处理办法也就是编写一个Helper类(辅助类),完成配置文件读写功能,然后在各个 Action的构造函数中,调用这个Helper类设置message属性值。 September 2, 2004 So many open source projects. Why not Open your Documents?
分享到:
收藏