spring开发指南 夏昕著

所需积分/C币:50 2012-04-12 23:11:08 1.2MB PDF
收藏 收藏
举报

夏昕所著Spring开发指南,用浅显的例子把框架原理解释的很透彻,推荐初学者及开发人员阅读
开发指南 年年初,笔者在国外工作。其时,一位与笔者私交甚好的印度同事 从 公司离职去斯坦福深造,临走送给笔者·本他最钟爱的书籍作为纪念。 工作间隙,时常见到他摩娑此书,摇头不止(印度人习惯和中国人相反,摇头代表肯定 赞同,相当于与中国人点头。笔者刚开始与印度同僚共事之时,每每组织项目会议,一屋子 人频频摇头,让笔者倍感压力 下班后,带着好友离职的失落,笔者夹着这夲书走在回家的路上,恰巧路过东海岸,天 色依然眀朗,随意坐上了海边一家酒吧的露天吧台,要了杯啤酒,随手翻弄着书的扉页,不 经意看见书中遍布的钢笔勾画的线条。 “呵呵, 这家伙,还真把这本书当回事啊”,一边笑着,一边摊开了此书, 想看看到底是怎样的书让这样个聪明老练的同事如此欣赏 从此开始,这本书伴随笔者度过了整整一个月的业余时间 这本书,也就是出自 的 REE Design and 此书已经由电子工业出版社出版,译版名为《设计开发编程指南》。 半年后,一个新的 发布,同样出自 的于笔,这自然 引起了笔者极大的兴趣,这就是 实际上是 书中所阐述的设计思想的具体实现。在 倡导 实用主义的设计思想,并随书提供了一个初步的开发框架实现 开发包)。而 正是这一思想的更全面和具体的体现。 在 开发包的基之上,进行了进步的改造和扩充,使其发展 为一个更加开放、清晰、全面、高效的开发框架。 木文正是针对 的井发指南,讲述了 的设计思 想以及在开发中的实际使用。同时穿插了一些笔者在项目实作中的经验所得 目录 初探 准备工作 构建 基础代码 基础语义 依赖注入的几种实现类型 接口注入 设值注入 构造子注入 几种依赖注入模式的对比总结 封装机制 高级特性 应用与 指南 基于模板的表示层技术 应用中模板技术与技术的对比 输入验证与数据绑定 异常处理 国际化支持 高级特性 驱动模式 拦截器体系 输入校验 国际化支持 数据持久层 事务管理 持久层封装 概念 与 应用 初探 开始 研究之前,先让我们来看一个分钟上于教程。 准备工作 下载 的最新版本,并解压缩到指定目录。 在中新建一个项目,并将 将其相关类库加入项目。 笔者所用为 ,类厍配置如下 安 cts th Libraries|tgrx JARs and class folders on the build path +cb aopalliance jar-D: \W orks\MyWork\Springlib 点 da jar tl-cria comm ons-beanut D:"oxks、 Minora + omm ons-collections-2-1 jar-D: W orks \My Work\Springllib Add External JARs s-dbcp-1.1. iar-D: \Works MyWorkLS 1ib Add variable tcra commons-lang-2.0. jar-D:\M orks\Myork'Springllib +-cra commoIs-logging, jsr-D: \Works\ My ork\\lib Add library +-ra comm ons-logging r-D: \Works Myflork'\Spring\lib Ada cl叠ssFa1deY D: Works \MorkS ar - D: H orks \M Work\Spring\lib Edit t-cra junit jar-I: \M Mork\Spring\li +-C l0g4j-1.2.8. jar-D: \W orks\ ork\Sprinzlib 十 +lck 五.] york\Spring lib D:、 Worls{Mrrk , 1ib D:\Works My orkSpringlib ks M orkiSpringilib JRE SYst 采用 并结合 作为日志输出组件。为了在 调试过程中能观察到 的日志输出,在 中新建 配置文件, 内容如下 配置完成后,项目结构如下图所示: >pIIILE 白 Hellot i 串 aEy 构建 基础代码 示例基础代码包括 接口 接口定义了一个 方法,在我们示例屮,不同的 实现提供了各自的 方法,以完成目标逻辑 接口的两个实现 将其 属性与输入字符串相连接,并返回其大写形式。 将其 属性与输入字符串相连接,并返回其小写形式。 配置文件( ) (请确保配置 位于工作路径之卜,注意工作路径并不等同 的默认工作路径为项日根路径,也就是 文件所在的日录,而默认输出日录是项日 的一部分,并非工作路径。 测试代码 可以看到,上面的测试代码中,我们根据 创建了一个 实 例,并从此实例中获取我们所需的 实现。 运行测试代码,我们看到控制台输出 我们将 中的配置稍加修改: 再次运行测试代码,看到: 示例完成! 很简单的示例,的确很简单,甚至简单到了不够真实 个过,不知大家从这个最简单的例子中看出了什么? 真的只是打印输出了两行不痛不痒的问候语? 仔细观察一下上面的代码,可以看到: 我们的所有程序代码中(除测试代码之外),并没有出现中的任何组件。 和 的 属性均由 通过读取配置文件( 态设置。 客户代码(这旦就是我们的测试代码)仅仅面向接口编程,而无需知道实现类的具体名称。同时, 我们可以很简单的通过修改配置文件来切奂具体的底层实现类。 上面所说的这些,对于我们的实际开发有何帮助? 首先,我们的组件并不需要实现框架指定的接口,因此可以轻松的将组件从 中脱离,甚 至不需要任何修改(这在基于框架实现的应用中是难以想象的)。 其次,组件间的依赖关系减少,极大改善了代码的可重用性。 的依赖注入机制,可以在运行期为组件巸置所需資源,而无需在编写组件代矿时就加以 指定,从而在相当程度上降低了组件之间的耦合 上面的例子中,我们通过 ,在运行期动态将字符串“ ”注入到 实现类的 属性中。 现在偃设我们回到传统的实现模式,应该如何处理? 舣的处坦办法也就是编写一个类(辅助类),完成配置文件读写功能,然后在各个 的构造函数中,调用这个类设置 属性值。 此时,我们的组件就与这个 类库建立了依赖关系,之后我们需要在其他系统中重用这个 组件的话,也必须连同这个类库一并移植。实际开发中,依赖关系往往并非如此简单 组件与项目基层代码之间复杂的关联,使得组件重用性大大下降。 通过依赖注入模式,将依颧关系从编码中脱离出来,从而大大降低了组件之间的耦合, 实现了组件真正意义上的即插即用。这也是 最具价值的特性之 面向接口编程。 诚然,即使没有 ,实现面向接口的设计也不困难 对于面向接凵设计的意义,在 于它为面向接口编程提供了一个更加自然的平台。基于开发,程序员会自然而然倾向于 使用接口来定义不同层次之间的关联关系,这种白发的倾向性,来白于 所提供的简单舒 适的依赖注入实现。 使得接口的定义和使用不再像传统编码过程中那么繁琐(传统编码 过程中,引入一个接口,往往也意味着同时要引入一个类,也许还有一个额外的配置文 件及其读写代码)。 既然给我们带来了如此这般的好处,那么,反过来,让我们试想一下,如果不使用 框 架,回到我们传统的编码模式(乜许正是目前的编码模式),情況会是怎样? 对于上例而言,我们需要怎样才能实现相同的功能? 上:面的接口及其两个实现类 都与 无关,可以保留。而调 用 的测试代码,如樊要实现同样的功能,应该如何编写? 首先,我们必须编写一个配置文件读取类,以实现 属性的可配置化 其次,得有一个 模式的实砚,并结合配置文件的读写完成 的动态加载。 于是,我们实现了一个 来实现这个功能 是 提供的辅助类

...展开详情
试读 127P spring开发指南 夏昕著
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
  • GitHub

    绑定GitHub第三方账户获取
关注 私信 TA的资源
上传资源赚积分or赚钱
最新推荐
spring开发指南 夏昕著 50积分/C币 立即下载
1/127
spring开发指南 夏昕著第1页
spring开发指南 夏昕著第2页
spring开发指南 夏昕著第3页
spring开发指南 夏昕著第4页
spring开发指南 夏昕著第5页
spring开发指南 夏昕著第6页
spring开发指南 夏昕著第7页
spring开发指南 夏昕著第8页
spring开发指南 夏昕著第9页
spring开发指南 夏昕著第10页
spring开发指南 夏昕著第11页
spring开发指南 夏昕著第12页
spring开发指南 夏昕著第13页
spring开发指南 夏昕著第14页
spring开发指南 夏昕著第15页
spring开发指南 夏昕著第16页
spring开发指南 夏昕著第17页
spring开发指南 夏昕著第18页
spring开发指南 夏昕著第19页
spring开发指南 夏昕著第20页

试读结束, 可继续阅读

50积分/C币 立即下载 >