内容介绍
本书分为三个部分,两个附录,每个部分对应Spring框架的一个领域:核心框架、业务和数据层、表示层。每一部分不仅是在前一部分的基础上,还可以独立存在。因此,读者不必从头开始,可以直接进入某个话题。本书的第一部分展示了Spring框架的两个核心特性:依赖注入和面向方面编程。第二部分基于第一部分介绍的DI和AOP的特点,描述了如何将这两个概念应用到应用的数据层和业务层。第三部分介绍Spring构建Web应用程序的各种方式。
这本书适合所有Java开发人员,尤其是企业级Java开发人员。这本书引导读者一步一步地浏览整本书复杂的例子。Spring最突出的特点就是让企业系统开发变得简单,所以企业系统开发人员会更加欣赏这本书里的样例代码。本书的最后四章描述了Spring如何支持Web层的开发如果你是一名网络开发人员,你会发现这本书的最后一部分特别有用。
目录
- 第一部分 Spring的核心
- 第1章 开始Spring之旅
- 1.1 Spring是什么
- 1.2 开始Spring之旅
- 1.3 理解依赖注入
- 1.3.1 依赖注入
- 1.3.2 DI应用
- 1.3.3 企业级应用中的依赖注入
- 1.4 应用AOP
- 1.4.1 AOP介绍
- 1.4.2 AOP使用
- 1.5 小结
- 第2章 基本Bean装配
- 2.1 容纳你的Bean
- 2.1.1 BeanFactory介绍
- 2.1.2 使用应用上下文
- 2.1.3 Bean的生命
- 2.2 创建Bean
- 2.2.1 声明一个简单的Bean
- 2.2.2 通过构造函数注入
- 2.3 注入Bean属性
- 2.3.1 注入简单的数值
- 2.3.2 使用其他的Bean
- 2.3.3 装配集合
- 2.3.4 装配空值
- 2.4 自动装配
- 2.4.1 四种自动装配类型
- 2.4.2 混合使用自动和手动装配
- 2.4.3 何时采用自动装配
- 2.5 控制Bean创建
- 2.5.1 Bean范围化
- 2.5.2 利用工厂方法来创建Bean
- 2.5.3 初始化和销毁Bean
- 2.6 小结
- 第3章 高级Bean装配
- 3.1 声明父Bean和子Bean
- 3.1.1 抽象基Bean类型
- 3.1.2 抽象共同属性
- 3.2 方法注入
- 3.2.1 基本的方法替换
- 3.2.2 获取器注入
- 3.3 注入非Spring Bean
- 3.4 注册自定义属性编辑器
- 3.5 使用Spring的特殊Bean
- 3.5.1 后处理Bean
- 3.5.2 Bean工厂的后处理
- 3.5.3 配置属性的外在化
- 3.5.4 提取文本消息
- 3.5.5 程序事件的解耦
- 3.5.6 让Bean了解容器
- 3.6 脚本化的Bean
- 3.6.1 给椰子上Lime
- 3.6.2 脚本化Bean
- 3.6.3 注入脚本化Bean的属性
- 3.6.4 刷新脚本化Bean
- 3.6.5 编写内嵌的脚本化Bean
- 3.7 小结
- 第4章 通知Bean
- 4.1 AOP简介
- 4.1.1 定义AOP术语
- 4.1.2 Spring对AOP的支持
- 4.2 创建典型的Spring切面
- 4.2.1 创建通知
- 4.2.2 定义切点和通知者
- 4.2.3 使用ProxyFactoryBean
- 4.3 自动代理
- 4.3.1 为Spring切面创建自动代理
- 4.3.2 自动代理@AspectJ切面
- 4.4 定义纯粹的POJO切面
- 4.5 注入AspectJ切面
- 4.6 小结
- 第二部分 企业Spring
- 第5章 使用数据库
- 5.1 Spring的数据访问哲学
- 5.1.1 了解Spring数据访问的异常体系
- 5.1.2 数据访问的模板化
- 5.1.3 使用DAO支持类
- 5.2 配置数据源
- 5.2.1 使用JNDI数据源
- 5.2.2 使用数据源连接池
- 5.2.3 基于JDBC驱动的数据源
- 5.3 在Spring里使用JDBC
- 5.3.1 处理失控的JDBC代码
- 5.3.2 使用JDBC模板
- 5.3.3 使用Spring对JDBC的DAO支持类
- 5.4 在Spring里集成Hibernate
- 5.4.1 选择Hibernate的版本
- 5.4.2 使用Hibernate模板
- 5.4.3 建立基于Hibernate的DAO
- 5.4.4 使用Hibernate 3上下文会话
- 5.5 Spring和Java持久API
- 5.5.1 使用JPA模板
- 5.5.2 创建一个实体管理器工厂
- 5.5.3 建立使用JPA的DAO
- 5.6 Spring和iBATIS
- 5.6.1 配置iBATIS客户模板
- 5.6.2 建立基于iBATIS的DAO
- 5.7 缓存
- 5.7.1 配置缓存方案
- 5.7.2 缓存的代理Bean
- 5.7.3 注解驱动的缓存
- 5.8 小结
- 第6章 事务管理
- 6.1 理解事务
- 6.1.1 仅用4个词解释事务
- 6.1.2 理解Spring对事务管理的支持
- 6.2 选择事务管理器
- 6.2.1 JDBC事务
- 6.2.2 Hibernate事务
- 6.2.3 JPA事务
- 6.2.4 JDO事务
- 6.2.5 JTA事务
- 6.3 在Spring中编写事务
- 6.4 声明式事务
- 6.4.1 定义事务参数
- 6.4.2 代理事务
- 6.4.3 在Spring 2.0里声明事务
- 6.4.4 定义注释驱动事务
- 6.5 小结
- 第7章 保护Spring
- 7.1 Spring Security介绍
- 7.2 验证用户身份
- 7.2.1 配置Provider Manager
- 7.2.2 根据数据库验证身份
- 7.2.3 根据LDAP仓库进行身份验证
- 7.3 控制访问
- 7.3.1 访问决策投票
- 7.3.2 决定如何投票
- 7.3.3 处理投票弃权
- 7.4 保护Web应用程序
- 7.4.1 代理Spring Security的过滤器
- 7.4.2 处理安全上下文
- 7.4.3 提示用户登录
- 7.4.4 处理安全例外
- 7.4.5 强制Web安全性
- 7.4.6 确保一个安全的通道
- 7.5 视图层安全
- 7.5.1 有条件地渲染内容
- 7.5.2 显示用户身份验证信息
- 7.6 保护方法调用
- 7.6.1 创建一个安全切面
- 7.6.2 使用元数据保护方法
- 7.7 小结
- 第8章 Spring和基于POJO的远程服务
- 8.1 Spring远程调用概览
- 8.2 与RMI一起工作
- 8.2.1 连接RMI服务
- 8.2.2 输出RMI服务
- 8.3 使用Hessian和Burlap的远程调用
- 8.3.1 访问Hessian/Burlap服务
- 8.3.2 用Hessian或Burlap公开Bean的功能
- 8.4 使用HTTP invoker
- 8.4.1 通过HTTP访问服务
- 8.4.2 把Bean作为HTTP服务公开
- 8.5 Spring和Web服务
- 8.5.1 使用XFire将Bean输出为Web服务
- 8.5.2 使用JSR-181注释声明Web服务
- 8.5.3 消费Web服务
- 8.5.4 使用XFire客户端代理Web服务
- 8.6 小结
- 第9章 在Spring中建立契约优先Web服务
- 9.1 介绍Spring-WS
- 9.2 定义契约(首先!)
- 9.3 使用服务端点处理消息
- 9.3.1 建立基于JDOM消息的端点
- 9.3.2 序列化消息载荷
- 9.4 合并在一起
- 9.4.1 Spring-WS:全景视图
- 9.4.2 将消息映射到端点
- 9.4.3 置入服务端点
- 9.4.4 配置消息序列化器
- 9.4.5 处理端点异常
- 9.4.6 提供WSDL文件
- 9.4.7 部署服务
- 9.5 消费Spring-WS Web服务
- 9.5.1 使用Web服务模板
- 9.5.2 使用Web服务的网关支持
- 9.6 小结
- 第10章 Spring消息
- 10.1 JMS简介
- 10.1.1 构建JMS
- 10.1.2 介绍JMS的优点
- 10.1.3 在Spring中安装ActiveMQ
- 10.2 协同使用JMS和Spring
- 10.2.1 处理冗长失控的JMS代码
- 10.2.2 使用JMS模板
- 10.2.3 转换消息
- 10.2.4 将Spring的网关支持类应用于JMS
- 10.3 创建消息驱动POJO
- 10.3.1 创建消息监听器
- 10.3.2 编写纯POJO MDP
- 10.4 使用基于消息的RPC
- 10.4.1 引入Lingo
- 10.4.2 输出服务
- 10.4.3 代理JMS
- 10.5 小结
- 第11章 Spring和EJB
- 11.1 在Spring中置入EJB
- 11.1.1 代理会话Bean(EJB 2.x)
- 11.1.2 将EJB置入Spring Bean
- 11.2 开发Spring驱动的EJB(EJB 2.x)
- 11.3 Spring和EJB3
- 11.3.1 引入Pitchfork
- 11.3.2 从Pitchfork起步
- 11.3.3 通过注释注入资源
- 11.3.4 使用注释声明拦截器
- 11.4 小结
- 第12章 访问企业服务
- 12.1 从JNDI中获取对象
- 12.1.1 使用传统的JNDI
- 12.1.2 注入JNDI对象
- 12.1.3 在Spring 2中注入JNDI对象
- 12.2 发送电子邮件
- 12.2.1 配置邮件发送器
- 12.2.2 构建电子邮件
- 12.3 调度任务
- 12.3.1 使用Java Timer调度任务
- 12.3.2 使用Quartz调度器
- 12.3.3 按调度计划调用方法
- 12.4 使用JMX管理Spring Bean
- 12.4.1 将Spring Bean输出为MBean
- 12.4.2 远程访问MBean
- 12.4.3 处理通知
- 12.5 小结
- 第三部分 Spring客户端
- 第13章 处理Web请求
- 13.1 开始Spring MVC之旅
- 13.1.1 请求生命中的一天
- 13.1.2 配置DispatcherServlet
- 13.1.3 Spring MVC概述
- 13.2 将请求映射到控制器
- 13.2.1 使用SimpleUrlHandler Mapping
- 13.2.2 使用ControllerClassName HandlerMapping
- 13.2.3 使用元数据映射控制器
- 13.2.4 使用多映射处理器
- 13.3 用控制器处理请求
- 13.3.1 处理命令
- 13.3.2 处理表单提交
- 13.3.3 用向导处理复杂表单
- 13.3.4 使用一次性控制器
- 13.4 处理异常
- 13.5 小结
- 第14章 渲染Web视图
- 14.1 视图解析
- 14.1.1 使用模板视图
- 14.1.2 解析视图Bean
- 14.1.3 选择视图解析器
- 14.2 使用Spring模板
- 14.2.1 绑定表单数据
- 14.2.2 渲染被存储在外部的文本
- 14.2.3 显示错误
- 14.3 使用Tile设计页面布局
- 14.3.1 Tile视图
- 14.3.2 Tile控制器
- 14.4 使用JSP的替代技术
- 14.4.1 使用Velocity模板
- 14.4.2 使用FreeMarker
- 14.5 产生非HTML输出
- 14.5.1 产生Excel工作表
- 14.5.2 产生PDF文档
- 14.5.3 开发自定义视图
- 14.6 小结
- 第15章 使用Spring Web Flow
- 15.1 开始Spring Web Flow之旅
- 15.1.1 安装Spring Web Flow
- 15.1.2 配置流程执行程序
- 15.1.3 登记流程定义
- 15.2 布置流程的基础
- 15.2.1 流程变量
- 15.2.2 start和end状态
- 15.2.3 搜集顾客信息
- 15.2.4 绑定比萨饼订单
- 15.2.5 完成订单
- 15.2.6 几个结束工作
- 15.3 高级Web流程技术
- 15.3.1 使用decision状态
- 15.3.2 提炼子流程并使用子状态
- 15.4 集成Spring Web Flow与其他框架
- 15.4.1 Jakarts Struts
- 15.4.2 JavaServer Face
- 15.5 小结
- 第16章 集成其他Web框架
- 16.1 协同使用Spring和Struts
- 16.1.1 向Struts注册Spring插件
- 16.1.2 编写知晓Spring的Struts动作
- 16.1.3 委托Spring配置的动作
- 16.1.4 关于Struts 2
- 16.2 协同使用Spring和WebWork 2/Struts 2
- 16.3 集成Spring和Tapestry
- 16.3.1 集成Spring和Tapestry 3
- 16.3.2 集成Spring和Tapestry 4
- 16.4 协同使用Spring和JSF
- 16.4.1 解析JSF管理的属性
- 16.4.2 解析Spring Bean
- 16.4.3 在JSF页面中使用Spring Bean
- 16.4.4 在JSF中暴露应用程序环境
- 16.5 Spring中带有DWR的支持Ajax的应用程序
- 16.5.1 直接Web远程控制
- 16.5.2 访问Spring管理的Bean DWR
- 16.6 小结
- 附录A 装配Spring
- A.1 下载Spring
- A.1.1 研究Spring发布
- A.1.2 构建自己的类路径
- A.2 把Spring添加为一个Maven 2依赖项
- A.3 Spring与Ant
- A.4 Spring与Log4j
- 附录B 用(和不用)Spring进行测试
- B.1 测试简介
- B.1.1 理解不同类型的测试
- B.1.2 使用JUnit
- B.1.3 Spring在测试中的角色
- B.2 单元测试Spring MVC控制器
- B.2.1 模拟对象
- B.2.2 断言ModelAndView的内容
- B.3 使用Spring进行综合测试
- B.3.1 测试装配后的对象
- B.3.2 综合测试事务处理对象
- B.3.3 测试数据库
- B.3.4 使用Gienah Testing在JUnit 4中进行测试
- B.4 小结