本书分为三大部分和两个附录,每一部分专注于Spring框架的一个领域:核心层、中间层和Web层。第一部分展示了Spring框架的两个核心概念:反向控制(Inverstion of Control,IoC)和面向切面编程(Aspect-Oriented Programming,AOP),以便读者理解Spring的基础原理,这些基础原理在本书各个章节都会用到。第二部分在第1章介绍的IoC和AOP基础之上,展示了如何将这两个概念应用到应用系统的中间层。第三部分走出中间层迈向显示层,在很多J2EE系统中显示层被称为Web层。附录A介绍如何开始自己的Spring应用系统,如何下载Spring以及如何编写Ant配置文件。附录B介绍一些与Spring有关的其他开源框架。本书的每一部分既是建立在前一部分的基础上,同时也都是独立存在的,所以,读者不必从头开始就可以深入到各个主题。\r\n 本书适合所有Java开发人员,特别是对企业级Java开发人员更有帮助。本书将循序渐进地指导读者浏览贯穿本书的复杂示例。Spring最突出之处在于它使企业级系统开发变得简单,所以,企业级系统开发人员会更加欣赏本书中的示例代码。本书最后4章描述了Spring是如何为Web层开发提供支持的,如果你是一位Web开发人员,你会发现本书的最后一部分特别有用。
第一部分 Spring基础\r\n 第1章 开始Spring之旅\r\n 1.1 为什么使用Spring\r\n 1.1.1 J2EE开发者的一天\r\n 1.1.2 Spring的承诺\r\n 1.2 Spring是什么\r\n 1.3 开始Spring之旅\r\n 1.4 理解反向控制\r\n 1.4.1 依赖注入\r\n 1.4.2 IoC应用\r\n 1.4.3 企业级应用中的IoC\r\n 1.5 应用AOP\r\n 1.5.1 AOP介绍\r\n 1.5.2 AOP使用\r\n 1.5.3 企业级应用中的AOP\r\n 1.6 Spring比较\r\n 1.6.1 比较Spring和EJB\r\n 1.6.2 关于其他轻量级容器\r\n 1.6.3 Web框架\r\n 1.6.4 持久层框架\r\n 1.7 小结\r\n 第2章 装配Bean\r\n 2.1 容纳你的Bean\r\n 2.1.1 BeanFactory介绍\r\n 2.1.2 使用应用上下文\r\n 2.1.3 Bean的生命\r\n 2.2 基本装配\r\n 2.2.1 使用XML装配\r\n 2.2.2 添加一个Bean\r\n 2.2.3 通过Set方法注入依赖\r\n 2.2.4 通过构造函数注入依赖\r\n 2.3 自动装配\r\n 2.3.1 处理自动装配中的不确定性\r\n 2.3.2 混合使用自动和手动装配\r\n 2.3.3 缺省自动装配\r\n 2.3.4 何时采用自动装配\r\n 2.4 使用Spring的特殊Bean\r\n 2.4.1 对Bean进行后处理\r\n 2.4.2 对Bean工厂进行后处理\r\n 2.4.3 分散配置\r\n 2.4.4 定制属性编辑器\r\n 2.4.5 解析文本信息\r\n 2.4.6 监听事件\r\n 2.4.7 发布事件\r\n 2.4.8 感知其他Bean\r\n 2.5 小结\r\n 第3章 创建切面\r\n 3.1 AOP介绍\r\n 3.1.1 定义AOP术语\r\n 3.1.2 Spring的AOP实现\r\n 3.2 创建通知\r\n 3.2.1 前置通知\r\n 3.2.2 后置通知\r\n 3.2.3 环绕通知\r\n 3.2.4 异常通知\r\n 3.2.5 引入通知\r\n 3.3 定义切入点\r\n 3.3.1 在Spring中定义切入点\r\n 3.3.2 理解Advisor\r\n 3.3.3 使用Spring的静态切入点\r\n 3.3.4 使用动态切入点\r\n 3.3.5 切入点实施\r\n 3.4 创建引入\r\n 3.4.1 实现IntroductionInterceptor\r\n 3.4.2 创建一个引入Advisor\r\n 3.4.3 谨慎使用引入通知\r\n 3.5 使用ProxyFactoryBean\r\n 3.6 自动代理\r\n 3.6.1 BeanNameAutoProxyCreator\r\n 3.6.2 DefaultAdvisorAutoProxyCreator\r\n 3.6.3 元数据自动代理\r\n 3.7 小结\r\n第二部分 Spring在业务层的应用\r\n 第4章 征服数据库\r\n 4.1 学习Spring的DAO理念\r\n 4.1.1 理解Spring的DataAccessException\r\n 4.1.2 与DataSource一起工作\r\n 4.1.3 一致的DAO支持\r\n 4.2 在Spring中使用JDBC\r\n 4.2.1 JDBC代码的问题\r\n 4.2.2 使用JdbcTemplate\r\n 4.2.3 把操作创建成对象\r\n 4.2.4 自增键\r\n 4.3 介绍Spring的ORM框架支持\r\n 4.4 用Spring整合Hibernate\r\n 4.4.1 Hibernate概览\r\n 4.4.2 管理Hibernate资源\r\n 4.4.3 用HibernateTemplate访问Hibernate\r\n 4.4.4 HibernateDaoSupport的子类\r\n 4.5 Spring和JDO\r\n 4.5.1 配置JDO\r\n 4.5.2 用JdoTemplate访问数据库\r\n 4.6 Spring和iBATIS\r\n 4.6.1 配置SQL Map\r\n 4.6.2 使用SqlMapClientTemplate\r\n 4.7 Spring和OJB\r\n 4.8 小结\r\n 第5章 事务管理\r\n 5.1 理解事务\r\n 5.1.1 仅用4个词解释事务\r\n 5.1.2 理解Spring对事务管理的支持\r\n 5.1.3 介绍Spring的事务管理器\r\n 5.2 在Spring中编写事务\r\n 5.3 声明式事务\r\n 5.3.1 理解事务属性\r\n 5.3.2 声明一个简单的事务策略\r\n 5.4 通过方法名声明事务\r\n 5.4.1 使用NameMatchTransactionAttributeSource\r\n 5.4.2 名称匹配事务的捷径\r\n 5.5 用元数据声明事务\r\n 5.5.1 用元数据来书写事务属性\r\n 5.5.2 用Commons Attributes声明事务\r\n 5.6 修剪事务声明\r\n 5.6.1 从父TransactionProxyFactoryBean继承\r\n 5.6.2 自动代理事务\r\n 5.7 小结\r\n 第6章 远程调用\r\n 6.1 Spring远程调用概览\r\n 6.2 与RMI一起工作\r\n 6.2.1 连接RMI服务\r\n 6.2.2 输出RMI服务\r\n 6.3 使用Hessian和Burlap的远程调用\r\n 6.3.1 访问Hessian/Burlap服务\r\n 6.3.2 用Hessian或Burlap公开Bean的功能\r\n 6.4 使用HTTP invoker\r\n 6.4.1 通过HTTP访问服务\r\n 6.4.2 把Bean作为HTTP服务公开\r\n 6.5 使用EJB\r\n 6.5.1 访问EJB\r\n 6.5.2 用Spring开发EJB\r\n 6.6 使用JAX-RPC的Web Service\r\n 6.6.1 用JAX-RPC应用一个Web Service\r\n 6.6.2 在Spring里置入一个Web Service\r\n 6.7 小结\r\n 第7章 访问企业服务\r\n 7.1 从JNDI中获取对象\r\n 7.1.1 使用传统的JNDI\r\n 7.1.2 代理JNDI对象\r\n 7.2 发送电子邮件\r\n 7.3 调度任务\r\n 7.3.1 使用Java Timer调度任务\r\n 7.3.2 使用Quartz调度器\r\n 7.3.3 按调度计划调用方法\r\n 7.4 使用JMS发送消息\r\n 7.4.1 使用JMS模板发送消息\r\n 7.4.2 消费消息\r\n 7.4.3 转换消息\r\n 7.5 小结\r\n第三部分 Spring在Web层的应用\r\n 第8章 建立Web层\r\n 8.1 开始Spring MVC之旅\r\n 8.1.1 请求生命中的一天\r\n 8.1.2 配置DispatcherServlet\r\n 8.1.3 Spring MVC概述\r\n 8.2 将请求映射到控制器\r\n 8.2.1 将URL映射到Bean名称\r\n 8.2.2 使用SimpleUrlHandlerMapping\r\n 8.2.3 使用元数据映射控制器\r\n 8.2.4 使用多映射处理器\r\n 8.3 用控制器处理请求\r\n 8.3.1 编写一个简单的控制器\r\n 8.3.2 处理命令\r\n 8.3.3 处理表单提交\r\n 8.3.4 用向导处理复杂表单\r\n 8.3.5 在一个控制器中处理多个动作\r\n 8.3.6 使用一次性控制器\r\n 8.4 视图解析\r\n 8.4.1 使用模板视图\r\n 8.4.2 解析视图Bean\r\n 8.4.3 选择视图解析器\r\n 8.5 使用Spring的绑定标签\r\n 8.6 处理异常\r\n 8.7 小结\r\n 第9章 其他视图技术\r\n 9.1 使用Velocity模板\r\n 9.1.1 定义Velocity视图\r\n 9.1.2 配置Velocity引擎\r\n 9.1.3 解析Velocity视图\r\n 9.1.4 格式化日期和数字\r\n 9.1.5 暴露请求和会话属性\r\n 9.1.6 在Velocity中绑定表单域\r\n 9.2 使用FreeMarker\r\n 9.2.1 构造一个FreeMarker视图\r\n 9.2.2 配置FreeMarker引擎\r\n 9.2.3 解析FreeMarker视图\r\n 9.2.4 在FreeMarker中绑定表单域\r\n 9.3 使用Tile设计页面布局\r\n 9.3.1 Tile视图\r\n 9.3.2 Tile控制器\r\n 9.4 产生非HTML输出\r\n 9.4.1 产生Excel工作表\r\n 9.4.2 产生PDF文档\r\n 9.4.3 产生其他非HTML文件\r\n 9.5 小结\r\n 第10章 使用其他Web框架\r\n 10.1 使用Jakarta Struts\r\n 10.1.1 注册Spring插件\r\n 10.1.2 实现知晓Spring的Struts action\r\n 10.1.3 委托action\r\n 10.2 使用Tapestry\r\n 10.2.1 替换Tapestry引擎\r\n 10.2.2 装载Spring Bean至Tapestry页面中\r\n 10.3 集成JavaServer Faces\r\n 10.3.1 解析变量\r\n 10.3.2 发布请求已处理事件\r\n 10.4 集成WebWork\r\n 10.4.1 WebWork1\r\n 10.4.2 XWork/WebWork2\r\n 10.5 小结\r\n 第11章 保护Spring 应用程序\r\n 11.1 Acegi安全系统介绍\r\n 11.1.1 安全拦截器\r\n 11.1.2 认证管理器\r\n 11.1.3 访问决策管理器\r\n 11.1.4 运行身份管理器\r\n 11.2 管理身份验证\r\n 11.2.1 配置ProviderManager\r\n 11.2.2 根据数据库验证身份\r\n 11.2.3 根据LDAP仓库进行身份验证\r\n 11.2.4 基于Acegi和Yale CAS实现单次登录\r\n 11.3 控制访问\r\n 11.3.1 访问决策投票\r\n 11.3.2 决定如何投票\r\n 11.3.3 处理投票弃权\r\n 11.4 保护Web应用程序\r\n 11.4.1 代理Acegi的过滤器\r\n 11.4.2 强制Web安全性\r\n 11.4.3 处理登录\r\n 11.4.4 设置一个安全上下文\r\n 11.4.5 确保通道安全性\r\n 11.4.6 使用Acegi的标签库\r\n 11.5 保护方法调用\r\n 11.5.1 创建一个安全切面\r\n 11.5.2 使用元数据保护方法\r\n 11.6 小结\r\n附录A 装配Spri\r\n A.1 下载Spring\r\n A.2 选择一种JAR文件\r\n A.3 搭建你的项目\r\n A.4 利用Ant创建\r\n附录B Spring相关项目\r\n B.1 AppFuse\r\n B.2 Rich Client Project\r\n B.3 Spring.NET
译者序
Spring为Java大地带来了一阵春风。它作为一个优秀的轻量级企业应用开发框架,能够大大简化企业应用开发的复杂性。
Spring以反向控制和AOP这两种先进的设计理念为基础。统一了应用对象的查找、配置和生命周期管理,分离了业务与基础服务中的不同关注点。开发人员可以基于简单Java对象轻松实现与EJB同样强大的功能。
在业务层,Spring为企业级应用提供了一个相当全面的解决方案。这个方案包括数据库持久化支持,声明式事务管理,远程服务访问以及JMS、Mail、定时等多种企业服务。
在Web层,Spring为企业级应用提供了一个MVC框架,该框架相比其它流行的Web框架毫不逊色;而且Spring可以集成各种Web框架(Struts、WebWork等)和视图技术(JSP、Velocity等)。
随着Spring的日益流行,市场上有越来越多介绍Spring的图书上市。“确实是一本好书,是一本非常值得推荐的图书”这是Javalobby.org对Spring in Action的评价。目前在Amazon上Spring in Action的评价星级是4星半,受到很多读者的好评。
Spring in Action从Spring框架的核心概念——IOC和AOP讲起,到在应用系统各个层次中的应用。从概念到应用,从简单到复杂,概念清晰,循序渐进。如果读者是刚接触Spring的新手,译者建议你从头开始,一步步了解Spring其中的奥妙。对于已经有些Spring使用经验的读者来说,本书也具有很好的参考价值。本书译者也是在工作中经常从本书中获得一些灵感。
本书作者之一Craig Walls也是XDoclet in Action一书的作者之一。这也是Manning出版社的一本畅销图书,可见本书作者的写作功底。相信大家对Manning出版社的Java图书也都有所了解,这两年,Manning出版社确实出版很多非常实用的Java开发图书(当然包括本书)。
译者虽然在Java开发方面有些经验,但对于翻译图书还是第一次。所以,在翻译用词上可能还有欠缺的地方,大家如果对翻译内容有任何意见和建议请提交到本书中文版的Blog(http://springinaction.blogdriver.com/)中。如有关于Spring技术方面的问题也欢迎大家在Blog中一起讨论。
译者
Craig Walls,是一个在通信、金融、零售以及电子商务领域有着十几年开发经验的专业软件工程师,他也是XDoclet in Action这本书的作者之一。他经常在用户组和用户会议中出现,他目前住在得克萨斯州的Denton。
李磊,曾就职于VIA。目前在阿里巴巴从事“支付宝”开发工作,是一位资深开发工程师。有5年J2SE及J2EE开发经验,熟悉大量Java开源项目。目前住在美丽的西子湖畔——杭州。
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的作者
无封面