Spring in Action中文版
2006-3
人民邮电出版社
沃尔斯
382
564000
李磊
无
软件开发者需要具备许多品格,才能把开发工作做得更好。首先,他们得是善于分析的思想家以及问题的解决者。开发者最基本的任务就是制作出解决业务问题的软件。这就要求开发者能分析客户的需求,并总结出行之有效的解决方案。同时,他们要有很强的求知欲。软件行业的发展日新月异,新框架、新技术、新语言、以及新方法都不断更新变化。每一样都是一种新的工具,需要开发者去掌握并加入他的工具箱,以便他或她的工作能做得更好更快。还有一个最宝贵的品格,那就是“懒惰”。这种懒惰激励开发者努力用最小的开销找到最佳的解决方案。
本书分为三大部分和两个附录,每一部分专注于Spring框架的一个领域:核心层、中间层和Web层。第一部分展示了Spring框架的两个核心概念:反向控制(Inverstion of Control,IoC)和面向切面编程(Aspect-Oriented Programming,AOP),以便读者理解Spring的基础原理,这些基础原理在本书各个章节都会用到。第二部分在第1章介绍的IoC和AOP基础之上,展示了如何将这两个概念应用到应用系统的中间层。第三部分走出中间层迈向显示层,在很多J2EE系统中显示层被称为Web层。附录A介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。附录B介绍一些与Spring有关的其他开源框架。本书的每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必从头开始就可以深入到各个主题。 本书适合所有Java开发人员,特别是对企业级Java开发人员更有帮助。本书将循序渐进地指导读者浏览贯穿本书的复杂示例。Spring最突出之处在于它使企业级系统开发变得简单,所以,企业级系统开发人员会更加欣赏本书中的示例代码。本书最后4章描述了Spring是如何为Web层开发提供支持的,如果你是一位Web开发人员,你会发现本书的最后一部分特别有用。
Craig Walls,是一个在通信、金融、零售以及电子商务领域有着十几年开发经验的专业软件工程师,他也是XDoclet in Action这本书的作者之一。他经常在用户组和用户会议中出现,他目前住在得克萨斯州的Denton。
李磊,曾就职于VIA。目前在阿里巴巴从事“支付宝”开发工作,
第一部分 Spring基础 第1章 开始Spring之旅 1.1 为什么使用Spring 1.1.1 J2EE开发者的一天 1.1.2 Spring的承诺 1.2 Spring是什么 1.3 开始Spring之旅 1.4 理解反向控制 1.4.1 依赖注入 1.4.2 IoC应用 1.4.3 企业级应用中的IoC 1.5 应用AOP 1.5.1 AOP介绍 1.5.2 AOP使用 1.5.3 企业级应用中的AOP 1.6 Spring比较 1.6.1 比较Spring和EJB 1.6.2 关于其他轻量级容器 1.6.3 Web框架 1.6.4 持久层框架 1.7 小结 第2章 装配Bean 2.1 容纳你的Bean 2.1.1 BeanFactory介绍 2.1.2 使用应用上下文 2.1.3 Bean的生命 2.2 基本装配 2.2.1 使用XML装配 2.2.2 添加一个Bean 2.2.3 通过Set方法注入依赖 2.2.4 通过构造函数注入依赖 2.3 自动装配 2.3.1 处理自动装配中的不确定性 2.3.2 混合使用自动和手动装配 2.3.3 缺省自动装配 2.3.4 何时采用自动装配 2.4 使用Spring的特殊Bean 2.4.1 对Bean进行后处理 2.4.2 对Bean工厂进行后处理 2.4.3 分散配置 2.4.4 定制属性编辑器 2.4.5 解析文本信息 2.4.6 监听事件 2.4.7 发布事件 2.4.8 感知其他Bean 2.5 小结 第3章 创建切面 3.1 AOP介绍 3.1.1 定义AOP术语 3.1.2 Spring的AOP实现 3.2 创建通知 3.2.1 前置通知 3.2.2 后置通知 3.2.3 环绕通知 3.2.4 异常通知 3.2.5 引入通知 3.3 定义切入点 3.3.1 在Spring中定义切入点 3.3.2 理解Advisor 3.3.3 使用Spring的静态切入点 3.3.4 使用动态切入点 3.3.5 切入点实施 3.4 创建引入 3.4.1 实现IntroductionInterceptor 3.4.2 创建一个引入Advisor 3.4.3 谨慎使用引入通知 3.5 使用ProxyFactoryBean 3.6 自动代理 3.6.1 BeanNameAutoProxyCreator 3.6.2 DefaultAdvisorAutoProxyCreator 3.6.3 元数据自动代理 3.7 小结第二部分 Spring在业务层的应用 第4章 征服数据库 4.1 学习Spring的DAO理念 4.1.1 理解Spring的DataAccessException 4.1.2 与DataSource一起工作 4.1.3 一致的DAO支持 4.2 在Spring中使用JDBC 4.2.1 JDBC代码的问题 4.2.2 使用JdbcTemplate 4.2.3 把操作创建成对象 4.2.4 自增键 4.3 介绍Spring的ORM框架支持 4.4 用Spring整合Hibernate 4.4.1 Hibernate概览 4.4.2 管理Hibernate资源 4.4.3 用HibernateTemplate访问Hibernate 4.4.4 HibernateDaoSupport的子类 4.5 Spring和JDO 4.5.1 配置JDO 4.5.2 用JdoTemplate访问数据库 4.6 Spring和iBATIS 4.6.1 配置SQL Map 4.6.2 使用SqlMapClientTemplate 4.7 Spring和OJB 4.8 小结 第5章 事务管理 5.1 理解事务 5.1.1 仅用4个词解释事务 5.1.2 理解Spring对事务管理的支持 5.1.3 介绍Spring的事务管理器 5.2 在Spring中编写事务 5.3 声明式事务 5.3.1 理解事务属性 5.3.2 声明一个简单的事务策略 5.4 通过方法名声明事务 5.4.1 使用NameMatchTransactionAttributeSource 5.4.2 名称匹配事务的捷径 5.5 用元数据声明事务 5.5.1 用元数据来书写事务属性 5.5.2 用Commons Attributes声明事务 5.6 修剪事务声明 5.6.1 从父TransactionProxyFactoryBean继承 5.6.2 自动代理事务 5.7 小结 第6章 远程调用 6.1 Spring远程调用概览 6.2 与RMI一起工作 6.2.1 连接RMI服务 6.2.2 输出RMI服务 6.3 使用Hessian和Burlap的远程调用 6.3.1 访问Hessian/Burlap服务 6.3.2 用Hessian或Burlap公开Bean的功能 6.4 使用HTTP invoker 6.4.1 通过HTTP访问服务 6.4.2 把Bean作为HTTP服务公开 6.5 使用EJB 6.5.1 访问EJB 6.5.2 用Spring开发EJB 6.6 使用JAX-RPC的Web Service 6.6.1 用JAX-RPC应用一个Web Service 6.6.2 在Spring里置入一个Web Service 6.7 小结 第7章 访问企业服务 7.1 从JNDI中获取对象 7.1.1 使用传统的JNDI 7.1.2 代理JNDI对象 7.2 发送电子邮件 7.3 调度任务 7.3.1 使用Java Timer调度任务 7.3.2 使用Quartz调度器 7.3.3 按调度计划调用方法 7.4 使用JMS发送消息 7.4.1 使用JMS模板发送消息 7.4.2 消费消息 7.4.3 转换消息 7.5 小结第三部分 Spring在Web层的应用 第8章 建立Web层 8.1 开始Spring MVC之旅 8.1.1 请求生命中的一天 8.1.2 配置DispatcherServlet 8.1.3 Spring MVC概述 8.2 将请求映射到控制器 8.2.1 将URL映射到Bean名称 8.2.2 使用SimpleUrlHandlerMapping 8.2.3 使用元数据映射控制器 8.2.4 使用多映射处理器 8.3 用控制器处理请求 8.3.1 编写一个简单的控制器 8.3.2 处理命令 8.3.3 处理表单提交 8.3.4 用向导处理复杂表单 8.3.5 在一个控制器中处理多个动作 8.3.6 使用一次性控制器 8.4 视图解析 8.4.1 使用模板视图 8.4.2 解析视图Bean 8.4.3 选择视图解析器 8.5 使用Spring的绑定标签 8.6 处理异常 8.7 小结 第9章 其他视图技术 9.1 使用Velocity模板 9.1.1 定义Velocity视图 9.1.2 配置Velocity引擎 9.1.3 解析Velocity视图 9.1.4 格式化日期和数字 9.1.5 暴露请求和会话属性 9.1.6 在Velocity中绑定表单域 9.2 使用FreeMarker 9.2.1 构造一个FreeMarker视图 9.2.2 配置FreeMarker引擎 9.2.3 解析FreeMarker视图 9.2.4 在FreeMarker中绑定表单域 9.3 使用Tile设计页面布局 9.3.1 Tile视图 9.3.2 Tile控制器 9.4 产生非HTML输出 9.4.1 产生Excel工作表 9.4.2 产生PDF文档 9.4.3 产生其他非HTML文件 9.5 小结 第10章 使用其他Web框架 10.1 使用Jakarta Struts 10.1.1 注册Spring插件 10.1.2 实现知晓Spring的Struts action 10.1.3 委托action 10.2 使用Tapestry 10.2.1 替换Tapestry引擎 10.2.2 装载Spring Bean至Tapestry页面中 10.3 集成JavaServer Faces 10.3.1 解析变量 10.3.2 发布请求已处理事件 10.4 集成WebWork 10.4.1 WebWork1 10.4.2 XWork/WebWork2 10.5 小结 第11章 保护Spring 应用程序 11.1 Acegi安全系统介绍 11.1.1 安全拦截器 11.1.2 认证管理器 11.1.3 访问决策管理器 11.1.4 运行身份管理器 11.2 管理身份验证 11.2.1 配置ProviderManager 11.2.2 根据数据库验证身份 11.2.3 根据LDAP仓库进行身份验证 11.2.4 基于Acegi和Yale CAS实现单次登录 11.3 控制访问 11.3.1 访问决策投票 11.3.2 决定如何投票 11.3.3 处理投票弃权 11.4 保护Web应用程序 11.4.1 代理Acegi的过滤器 11.4.2 强制Web安全性 11.4.3 处理登录 11.4.4 设置一个安全上下文 11.4.5 确保通道安全性 11.4.6 使用Acegi的标签库 11.5 保护方法调用 11.5.1 创建一个安全切面 11.5.2 使用元数据保护方法 11.6 小结附录A 装配Spri A.1 下载Spring A.2 选择一种JAR文件 A.3 搭建你的项目 A.4 利用Ant创建附录B Spring相关项目 B.1 AppFuse B.2 Rich Client Project B.3 Spring.NET
前言 致谢 这本书的创作不仅仅是两个人的事情。除了两位作者之外,在各个方面很多人的参与之下才使这本书的诞生成为可能。 首先,我们要感谢Manning出版社的幕后工作人员:发行人Marjan Bace、他的助手Susan Capparelle、我们的编辑Jackie Carter,还有Denis Dalinnik、Leslie Haimes、Mary Piergies、Liz Welch、Susan Forsyth 和 Helen Trimes。我们无法想象还能找到更好更专业的队伍合作。你们在自己的岗位上都做得非常好,并且应该为制作出世界上最好的技术书而得到称赞。 我们还要感谢本书的审阅者:Doug Warren、Muhammad Ashikuzzaman、Ryan Cox、Mojahedul、Hasanat、Jack Herrington、 Olivier Jolly、William Lopez、Lester Martin、Dmitri Maximovich、Daniel Miller、Christian Parker、 Matthew Payne和Norman Richards,谢谢你们贡献了大量时间,提供给我们许多的反馈、批评和灵感,使本书更为完善。特别要感谢Doug Warren,在本书印刷之前,对原稿进行技术校正。 最后,还要感谢Rod Johnson和Spring小组的其他人,感谢他们在第一线创造了Spring。我们可以很诚实地说,使用Spring真是一件令人愉快的事。你们真是太棒了! CRAIG WALLS 我想感谢我亲爱的美丽的妻子:Raymie。你是我一生的最爱和最好的朋友,也是我最甜蜜的梦。谢谢你对我的支持和耐心,对于还在进行中的另一个图书项目——我保证马上就会结束了。 我的合著者,Ryan,是他让我开始了解Spring并帮助我整理这本书,把Spring告诉其他所有的人。 对于我在Michaels的小组成员——Ryan、Marianna、Van、Tonji、Jeff、Jim、Don、Carol 和Leida,感谢你们每一天都展现了一个世界级软件开发小组的水平和能力。现在这本书终于完成了,或许我将不用再谢绝这么多午餐邀请了! 感谢我在今年的全国巡回软件研讨会No-Fluff/Just-Stuff上遇到和交谈的朋友和同事:Glenn Vanderburg、Ted Neward、Bruce Tate、Venkat Subramaniam、Ramnivas Laddad、Dave Thomas、Erik Hatcher、 Howard Lewis Ship、Neal Ford、Rick Hightower、Ben Galbraith、Stuart Halloway 和 Matt Raible。感谢Jay Zimmerman一直以来的指导,并在2004年邀请我成为其中一员。 感谢在背后支持我的朋友和邻居:John、Jennifer以及经常为Raymie和我提供比萨饼、电影,还有忙里偷闲的休息的Tobey。 感谢Dick Wolf创办的“法律&秩序”,这个电视节目在我写作的时候提供了大量的背景噪声。 以及其他我在XDoclet in Action中感谢的所有人。 RYAN BREIDENBACH 首先,我要感谢我的妻子Angi。是你无限的耐心和鼓励让我能更加努力。我向你保证,在这本书完成后,你将会看到我更多的笑容和更加畅快的呼吸。 感谢我的女儿Julia,帮助我在脑海中形成写一本书应有的压力。在写作之余,访问一下“Elmo的世界和Jo Jo的马戏团”站点是件愉快的事情。 感谢我的父母,Mark和Lynda,还有我的兄弟Lee,能理解我为何在拜访你们的时候还埋头于我的笔记本。使我在将来的拜访中不会有什么压力。 感谢我的亲家,Stephanie 和George,感谢你们激励的话语,还有偶尔(不,应该是经常)帮助我们照看小孩,使Angi和我有更多自己的时间。 感谢我的那些开发伙伴:Van、Marianna、Tonji和Jerry,让我从你们那里得到很多意见。有时我的脑子转得太快,你们的提醒让我能归回原位。 感谢我的朋友和邻居:Dave、Javier、Alex、Scott和James。感谢你们经常提供这么多笑料,让我常常合不拢嘴。 感谢在CVSDude的朋友。非常酷的CVS主机名,CVS主机服务也想当棒。 最后要感谢我的良师益友:Graig,教给我写书的秘诀。还有很多其他的人,你们的帮助使这次的出版变得更加顺利。 关于本书 Spring框架是以简化J2EE系统开发为目标而创建的。同样,《Spring in Action中文版》是以学习如何容易地使用Spring而写的。我们的目标不是详细地列出Spring的API,我们想通过来自现实生活的实际示例代码为J2EE开发人员展示Spring框架。 因为Spring是模块化的框架,所以本书也是按这种方式来写的。我们知道不是所有的开发人员都需要这样,有些人想从头学习Spring,有的可能只是挑几个不同的话题,按照自己的需要来看。所以,本书既可以被刚开始学习Spring的读者当作学习工具,也可以被那些想深入了解某方面知识的读者用作参考指南。 章节组织 《Spring in Action中文版》分成三大部分和两个附录,每一部分专注于Spring框架的一个领域:核心层、中间层和Web层。每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必从头开始就可以深入到各个话题。 第一部分向你展示了Spring框架的两个核心概念:反向控制(Inversion of Control,IoC)和面向切面编程[1](Aspect-Oriented Programming,AOP)。这使读者可以更好地理解Spring的基础原理,这些基础原理在本书各个章节都会用到。 第1章向读者展示了IoC和AOP两个技术概念,以及Spring如何利用这两种技术使Java开发变得容易的,同时读者将了解到Spring和其他框架(如EJB、Struts和PicoContainer)的区别。 第2章详细地介绍了如何利用IoC配置你的应用系统,读者将学到如何编写松耦合的组件,如何在Spring容器中利用XML来描述各个组件的属性,装配其依赖类。 第3章向读者介绍了如何使用Spring的AOP来解耦交叉问题,如将安全模块从使用它的模块中独立出来。本章也为第5章做了铺垫。在第5章中,读者将学习如何利用AOP来实现声明式事务管理。 第二部分在第1章介绍的IoC和AOP基础之上,向读者展示了如何将这两个概念应用到应用系统的中间层。 第4章覆盖了整个Spring的数据持久层,向读者介绍了Spring对JDBC的支持,这简化了和JDBC相关的开发,读者也会了解到Spring是如何与当前一些流行的ORM框架(如Hibernate、JDO、OJB和iBATIS等)集成的。 第5章是第4章的延续,向读者展示了如何使用Spring事务管理来保证数据一致性。读者将看到Spring是如何在不使用EJB的情况下,利用AOP提供强大的声明式事务的。 第6章展示了如何将你的系统中的对象发布成远程服务,以及如何透明地使用远程服务。介绍的远程技术包括RMI、Hessian/Burlap、EJB、Web Services以及Spring自己的HttpInvoker。 第7章向读者展示了在Spring 中如何集成其他企业服务,读者将了解到使用Spring集成邮件服务, JMS甚至EJB都是那么的容易。 第三部分走出中间层迈向显示层,在很多J2EE系统中叫做Web层。 第8章介绍了Spring自己的MVC框架。读者将了解Spring如何透明的将Web参数绑定到业务对象中,同时又提供了数据验证和错误处理功能。你也将看到利用Spring的拦截器来添加新功能是多么的容易。 第9章在Spring MVC的基础上,向读者展示了除了使用JSP外,如何使用其他模板技术(如Velocity和FreeMarker)实现显示层,同时你将看到如何利用Spring MVC动态产生二进制文件(如PDF和Excel文档)。 第10章 向读者介绍了如何把Spring与其他Web框架集成在一起。对于那些已经在其他框架投入了很大精力的用户来说,Spring提供了与其他Web框架(如Struts、Tapestry、JavaServer Faces和WebWork)集成的支持。 最后,在第11章中,读者将了解到如何利用Acegi安全系统为你的Web系统提供认证服务,你将了解到如何将Acegi和你的业务对象集成,以提供方法级别上的安全控制。 附录A向读者介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。 附录B向读者介绍一些与Spring有关的其他开源框架。 本书读者群 《Spring in Action中文版》适合所有Java开发人员,特别是对企业级Java开发人员更有帮助。我们将循序渐进地指导你浏览贯穿本书的复杂示例。Spring的真正伟大之处在于它使企业级系统开发变得简单,所以,企业级系统开发人员会更加欣赏本书中的示例代码。 由于Spring的绝大部分都是关于提供企业级服务,所以Spring和EJB之间存在很多相似的地方,任何的EJB开发经验都会有助于对这两个框架的比较。虽然本书不是专注于Web系统的,但也有一部分是针对这个话题的。事实上最后四章描述了Spring是如何为Web层开发提供支持的,如果你是一个Web开发人员,你会发现本书的最后一部分特别有用。 编码规范和下载 本书有大量的示例代码,它们都使用代码字体,如果我们要你特别注意某些示例,就会使用加黑代码字体。 许多Spring的类名特别长,所以有时候我们需要使用换行号( )。 本书中的示例代码不都是完整的,我们通常只显示类中我们关注的一两个方法。书中系统的完整源代码可以在出版社的网站http://www.manning.com/walls2或http://www.springinaction.com中得到。 作者在线 购买了《Spring in Action中文版》,读者就可以免费访问由Manning出版社提供的一个在线论坛,在这里你可以给本书写评论,问一些技术问题,得到作者或其他读者的帮助。要进入这个论坛,请打开浏览器访问www.manning.com/walls2,通过这个页面你能知道如何登录论坛,论坛能提供那些帮助以及论坛的行为规范。 Manning对读者的许诺是为读者提供一个交流平台,在这里读者之间以及读者与作者之间可以进行有意的交流。不论进行多少次访问,作者的访问都是义务的,他们对论坛的贡献是自愿和免费的,所以,我们建议读者尽量向作者问一些有挑战性的问题,以免作者失去兴趣。 只要本书还在出版,读者就可以访问作者在线论坛以及以前的讨论信息。 关于书名 In Action系列图书是为帮助学习和记忆而设计的。根据认知科学的研究,人们能记住的东西往往是都是他们自主发现的东西。 尽管在Manning里没有人是认知学家,但是我相信如果想让学到的知识保持长久,必须要经过探索、感兴趣的实践、将学到的东西重述等阶段。人们只有经过主动的探索才能理解并记住新知识。实践驱动是In Action系列图书的本质,它鼓励读者尝试,编写新代码,探索新想法。 这本书的书名还有一个更实际的原因,那就是我们的读者都比较忙,他们使用本书来完成一个任务或解决一个问题,他们希望能在需要的时候从本书中快速找到他们需要的东西,他们需要这本书在实际中帮助他们,所有本系列的图书都是为这样的读者而设计的。 关于封面插图 本书的封面是“一个伟大的绅士军官”,这幅图选自Collection of Costumes of the Ottoman Empire,这本图册是住在伦敦Old Bond大街的William Miller于1802年1月1日出版的。因为无法找到这部集子的首页,所以我们很难查到具体的日期。这本书的目录用法语和英语标明了所有的人物,每幅图都有两位创作者的名字,毫无疑问,如果他们发现自己的艺术竟然在两百年后能为一本计算机编程图书的封面增色不少,肯定会惊叹不已。 Manning出版社的一个编辑在曼哈顿West 26th Street的一个车库里的古玩跳蚤市场买了这部册子。卖主是一个住在土尔其安卡拉的美国人,在他要收摊的时候成交了这笔买卖,这位Manning的编辑身上没有足够的现金,而他的信用卡和支票也被委婉拒绝。 卖主当天晚上要飞回安卡拉,使得这笔买卖似乎陷于无望,到底怎么解决的呢?只是一个古老的口头协议和握手。卖主提议通过电报付款,编辑手里拿着写有银行信息的纸条走了出来,腋下夹着那套图册,不用说,第二天,我们就把钱汇了出去。时至今日,我们依然对那位不知名的卖主对于我们同仁的信任而感激万分、印象深刻。这使我们回忆起很多古道热肠的事情。 像其他出现在我们封面上的插图一样,这些奥特曼图集里的图画成功地再现了两个世纪前服装的绚丽多彩,它们让我们想起了那个遥远时代的超然的美,还有其他历史时期——除了我们多动烦躁的现代社会。 从那以后,服装风格发生改变,当时富于浓郁地方特色的多样性已经逐渐淡化,现在,我们经常很难说出一个洲的居民和其他洲的居民有什么不同。也许,用乐观的角度来看,可以说我们用文化与视觉的多样性换来了更为多变的个人生活,或更加有趣的知识科技生活。 这些计算机图书的封面反映了两个世纪前地方生活的丰富多彩,而这部图集里的图片则为那灿烂的过去赋予了新的生命。Manning出版社的全体成员对这一新颖有趣的创意表示热烈祝贺。
Spring是掠过Java大地的一阵清风。Spring是以反向控制设计原理为基础,无需EJB而功能依然强大的轻量级J2EE开发框架。Spring大大简化了使用接口开发的复杂性,并且加快和简化了应用系统的开发。使用简单JavaBean就可以得到EJB的强大功能。 本书介绍了Spring背后的原理,引领你迅速进入对框架的体验之中。结合简短代码片断和贯穿全书的持续示例,本书向你展示了如何创建简单有效的J2EE应用系统。你将看到如何使用先进的开源工具解决持久层问题,以及如何将你的应用系统与其他流行Web框架集成。你将学习如何使用Spring管理大量的基础设施代码,这样你就可以将注意力集中在真正的问题上——重要的业务需要。 本书内容: ·使用Hibernate、JDO、iBatis、OJB以及JDBC开发持久层; ·声明式事务与事务管理; ·与其他Web框架集成:Struts、WebWork、Tapestry、Velocity; ·访问J2EE服务,如JMS和EJB; ·使用AOP解决交叉问题; ·企业组应用系统最佳实践。 “……一种解释Spring中各个主题的很好途径……我喜欢这本书” ——Christian Parker,Adigio公司总裁 “……没有其他书籍可以与这本书的实用性相提并论。” ——Olivier Jolly,J2EE构架师,Interface SI “我很喜欢这种展示Spring的方式。” ——Norman Richards,XDoclet in Action的作者之一 “我极力推荐这本书。” ——Jack Herrington,Code Generation in Action的作者
无
非常不错的一本书,由简单到深入,任何人都可以很容易的理解spring的详细操作过程,理解其中的IOC和AOP以及其他整合的技术
不建议出学者阅读,如果有一定基础,或是接触过spring开发的人,倒是不错的选择,提高编程思路.
自从我看了第一本inaction系列的书《strutsinaction》后,就一直对inaction系列的书很有好感,《springinaction》继承了inaction系列书的一贯传统。verygood!
整本书对spring做了深入的介绍,对初学者很有用
之前看过这本书,觉得在介绍Spring理论方面比较详细,也比较透彻,仔细阅读再加上一些实践,定能透彻理解Spring
很不错的~学习spring的好书
发觉这本书写的有点深了,不过就像他的名字inaction,对实际开发提供了很多很好的建议
一名话,确实好写的,只是AOP在项目中还没有用到过,没有读!
翻译的比较流畅,但还是有些问题。对照英文看了一下3.1.2,原文的“proxy”和“proxied”统统被翻译成了“代理”,不知道对不对。还有83页“如果目标对象实现了一个(或多个)接口暴露的方法”,原文是“Ifyourtargetobjectimplementsaninterface(s)thatexposestherequiredmethods,”译的不好。
相当经典的一本书,作者的风格很幽默,整本书看起来一点也不费劲
这本书比较适合初学者,看了之后感觉不错!
经典对基本原理讲得透彻
绝对是精品啊!我感觉收获很多~只是后面的Acegi版本很低,但是原理很清晰!
支付宝的牛人翻译的,非常经典
这本书对事物的讲解是比较透彻的
介绍的到的地方很不错
帮助很大,绝对是本好书,值得推荐。
此书还行,对初学者来说,还是可以看看的,对老手的话,可以当作参考用,书中对一些感念讲的还是比较透彻的
好象例子有点少,但是内容还是可以的
书是正版,很适合不愿外出购物的人。性价比超值
很不错,很不错,很不错,可惜不适合初学者
是一本由浅入深的资料。
不错,挺好的,回来一口气看完,慢慢品味
挺好的,朋友还在看
不错,没看完还
看后受益匪浅!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
翻译的总体上还行.起码买了不觉得亏
看80%了
一直以来对spring都持观望态度,只是零零散散地听说过AOP、IoC。偶然下买了这本书,感觉真的很不错,很多东西都说得浅显易懂,甚至是太清楚了。书如其名——inaction!值得推荐,适合入门者阅读!
写的都是原理性的东西,最好是对spring有了一些了解之后再看,会有油壶灌顶的感觉。主要是前几章讲原理的部分,对于深入理解ioc和aop的本质,有很大的帮助。
用于入门非常适合,第一章的两个简单例子就说明了spring的ioc和aop
当时买还可以,断断续续花了几个月全部阅读完毕。总体说不错啦,但真正要把这些东西用到j2ee中还得自己查阅不少资料,甚至看spring源码才行。但现在买这书有点过时了。国外的第二版已经上市了。
如题。可能Spring框架更新较快吧,书本代码已经落后于新版的SpringFramework了
《Springinaction》不错的一本书,好!
这本书还不错,值得一看,但需要一定的基础。适合有Spring使用经历的朋友阅读。
有些地方翻译的不是很舒畅,读起来有些拗口,或许英文原版就是这样的,只是翻译的人,没有根据自己的理解重新组织逻辑,总体来说还行,学习Spring的好书。
讲解层次清晰,易懂,分析也较为详细全面!总体上说是一本不错的spring入门书籍!
学习spring不错的选择,就是翻译的原因偶尔有些小错误。
是一本必不可少的spring入门图书。
虽然薄了一点,但是很多知识点都覆盖到了,不像国内的很多书籍,将大把大把的源代码贴出来,而且注释都没得一句。不过根据书上讲的代码做例子时,要仔细查看该例子的介绍,不要忽略了一些基础的配置,不然的话,出错了还找不到头绪。总之,是本很不错的书啦,对得起“inaction”系列!
内容和示例都还可以,但看时间长了容易晕,aop的概念果然不是可以轻易领会的
这本书写的很不错,比较使用
将的很详细,虽然很基础,不过很是使用!好书
书写的很好,概念解释也很清晰。
价格不贵,写的很基础,适合初学,相比国内同类动不动就4,60元,太便宜了
这本书虽然页数少,但是比较实用
非常喜欢,虽然例子不多,也没有完全的源码,但是理论分析很透彻,学有所用
总体来说翻的不错,书不是太厚,该讲的内容都将到了,可以作为入门的书籍。
不错,挺经典的!学习中......
看比较好,比较专业的书
内容非常的全面,总体来说非常的好
理论方面写的很棒,实例方面差了一些!
学起来很容易,通俗易懂,适合初学者.
读过了,书很好,就是翻译差那么些。但总体还是长进了不少这方面的知识
书不错看了英文的第二版,觉得更好
真的好书
很不错的,不过版本落后了,最好出2.0的
偶有错字,字句还需斟酌
因为口碑不错才买了这书不错
不借,值得一看!
edit2已经出来,建议各位再等等
好好研究研究!转换成自己的!好好研究研究!转换成自己的!
还不错哦久仰大名,很过瘾我靠,还要不少于15字啊
经典经典经典经典经典经典经典经典经典经典
外国的书一般讲得比较深,但不适合中国读者的阅读习惯,而且对于没有使用过SPRING的用户来说,可操作性不强
书买了快一年了。刚开始的时候一直没怎么看。学了一年多的java然后回过来看这本书感觉写的还是比较不错的。就是有些地方代码说明不是很完整特别是对刚入门的像我这类的import的方面的不完整这样就弄的想模仿着写的时候老是有很多问题。
这本书的内容有点老了,初学者看着不会太好,不过基本原理讲的还是很不错的,
果然与网上的评论一样,翻译的水平一般,本书的内容也不够深入,泛泛而谈
这本书不连续,看着让我抓狂。
还是看文档和sample好,而且文档也有中文版了
看了几章,现在觉得的没还是不太好,不过书不错,讲的不错
介绍比较笼统有点难懂哦实例也勉强
不得不说~这本书里面内容很乱(应该是翻译的问题),呵呵~真的有人想用这个入门~可能有花一定的时间~这本书绝对没有精通SPRING有条理
听说不错,所以买了!但现在很后悔,说是可以下载到书中代码,但实际根本不行!更可气的是,不让下载代码也到算了,大不了自己敲一遍,可气的是书中只给了代码片断,所以想运行一个完整实例,太难了!
我不知道英文版的书是怎么样的(应该是很不错的吧!),但这个中文版本的我可以说是我看过的比较差的一本技术书(里面的东西乱乱~感觉就是一个没有思维逻辑的人写的书)!我看着这书就有那种扁翻译者的感觉啊~这几个翻译我想应该没有计算机编程基础的人吧!书因该就是对英文的直译!你想想象用翻译软件翻译技术文章会是怎么样就知道这本会是怎么样的了~
翻译得太糟糕了