精通Spring2.x-企业应用开发详解(附光盘)

分類: 图书,计算机/网络,行业软件及应用,
作者: 陈雄华著
出 版 社: 电子工业出版社
出版时间: 2007-9-1字数: 1210000版次: 1页数: 788印刷时间: 2007/09/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787121047930包装: 平装编辑推荐
历时一载,倾力打造,深度经验,汇聚此书。
揭示内幕、深入浅出:对Spring的源码进行了彻底的分析,深刻揭示了Spring框架的技术内幕,让读者知其然,更知其所以然。
与时俱进、紧追前沿:全书根据最新的Spring2.1版本写就,此外,涉及到的第三方框架也采用当前最新版本。
面向实践,经验丰富:介绍了大量的编程技术和实践经验,这些技巧经验是作者多年开发实践所积累的心得,不容易在一般书籍中获得。
阅读轻松,富有趣味:全书代码简洁、图例丰富,且大部分章节都精心设计一个“轻松一刻”,大大地增强了阅读趣味性,读起来轻松有趣。
背景知识,一网打尽:在讲解Spring技术时,我们还适时对相关的Java知识、设计模式等背景知识进行介绍,因此您不会有任何的学习障碍。
内容简介
本书深刻揭示了Spring的技术内幕,对IoC、AOP、事务管理等根基性的技术进行了深度的挖掘。读者阅读本书后,不但可以熟练使用Spring的各项功能,对各种Spring内部机制也将了然于胸,真正做到知其然知其所以然。此外,我们还对Spring技术所涉及到的各种Java技术、Java设计模式进行了适时的介绍,通过这些背景知识的准备,读者在理解Spring的各项原理时将不会有任何的障碍。
在内容的剪裁上,我们力争做到实用性和深入性的统一。Spring技术涵盖面宽广,内容全面而丰富。我们经过谨慎分析,遴选出满足大多数企业应用的技术进行重点的分析和深入的讲解,忽略掉那些比较偏门的技术。这样我们就很好地达到了主次分明、重点突出的目的,而没有陷入“什么都讲,什么都没有讲透”的窠臼之中。
作者简介
陈雄华,2002年毕业于厦门大学计算机与信息工程学院,获硕士学位。是宝宝淘科技有限公司的创始人之一(www.baobaotao.com)。这是一个服务于全国母婴用户的综合性网站,作者负责网站整体框架设计牲及核心代码开发的工作。技术开发之余,常将经验所得行诸于文字,作者是天极网、IT168的专栏作者,在各大技术网站、报刊杂志发表过数十篇技术文章,广受读者好评。于2005年出版《精通JBuilder 2005》,本书是2005年最畅销技术图书之一。
目录
第1篇 概述
第1章 Spring概述
1.1 认识Spring
1.2 Spring带给我们什么
1.3 Spring体系结构
1.4 Spring 2.0的新功能
1.4.1 简化配置文件编写,增强配置文件的扩展性
1.4.2 新Bean的作用域
1.4.3 AOP的增强
1.4.4 持久层的增强
1.4.5 展现层的增强
1.4.6 其他
1.5 Spring对Java版本的要求
1.6 如何获取Spring
1.7 Spring项目文件结构
1.8 Spring的子项目
1.8.1 Spring Web Flow
1.8.2 Spring Web Services
1.8.3 Spring Security (Acegi Security)
1.8.4 Spring LDAP
1.8.5 Spring Rich Client
1.8.6 Spring Extensions Modules
1.8.7 Spring IDE for Eclipse
1.8.8 Spring BeanDoc
1.8.9 Spring OSGi
1.8.10 Spring .NET
1.9 和Spring相似的框架
1.9.1 PicoContainer
1.9.2 NanoContainer
1.9.3 Google Guice
1.9.4 Jdon Framework
1.10 小结
第2章 快速入门
2.1 实例功能概述
2.1.1 比Hello World更适用的实例
2.1.2 实例功能简介
2.2 环境准备
2.2.1 创建库表
2.2.2 建立工程
2.2.3 类包及Spring配置文件规划
2.3 持久层
2.3.1 建立领域对象
2.3.2 UserDao
2.3.3 LoginLogDao
2.3.4 在Spring中装配DAO
2.4 业务层
2.4.1 UserService
2.4.2 在Spring中装配Service
2.4.3 单元测试
2.5 展现层
2.5.1 配置Spring MVC框架
2.5.2 处理登录请求
2.5.3 JSP视图页面
2.6 打包和部署
2.6.1 通过Ant打包
2.6.2 在Tomcat中部署
2.7 小结
第2篇 Spring核心技术
第3章 IoC容器概述
3.1 IoC概述
3.1.1 通过实例理解IoC的概念
3.1.2 IoC的类型
3.1.3 通过容器完成依赖关系的建立
3.2 相关Java基础知识
3.2.1 简单实例
3.2.2 类装载器ClassLoader
3.2.3 Java反射机制
3.3 BeanFactory和ApplicationContext
3.3.1 BeanFactory介绍
3.3.2 ApplicationContext介绍
3.3.3 父子容器
3.4 Bean的生命周期
3.4.1 BeanFactory中Bean的生命周期
3.4.2 ApplicationContext中Bean的生命周期
3.5 小结
第4章 在IoC容器中装配Bean
4.1 Spring配置文档类型
4.2 Bean基本配置
4.2.1 装配一个Bean
4.2.2 Bean的命名
4.3 依赖注入
4.3.1 属性注入
4.3.2 构造函数注入
4.3.3 工厂方法注入
4.3.4 选择注入方式的考量
4.4 注入参数详解
4.4.1 字面值
4.4.2 引用其他Bean
4.4.3 内部Bean
4.4.4 null值
4.4.5 级联属性
4.4.6 集合类型属性
4.4.7 简化配置方式
4.4.8 自动装配
4.5 方法注入
4.5.1 lookup方法注入
4.5.2 方法替换
4.6之间的关系
4.6.1 继承
4.6.2 依赖
4.6.3 引用
4.7 Bean作用域
4.7.1 singleton作用域
4.7.2 prototype作用域
4.7.3 Web应用环境相关的Bean作用域
4.7.4 作用域依赖问题
4.8 FactoryBean
4.8.1 FactoryBean的工作方式
4.8.2 集合FactoryBean
4.8.3 属性FactoryBean
4.9 小结
第5章 Spring容器高级主题
5.1 Spring容器技术内幕
5.1.1 内部工作机制
5.1.2 BeanDefinition
5.1.3 InstantiationStrategy
5.1.4 BeanWrapper
5.2 属性编辑器
5.2.1 JavaBean的编辑器
5.2.2 Spring默认属性编辑器
5.2.3 自定义属性编辑器
5.3 使用外部属性文件
5.3.1 使用外部属性文件
5.3.2 使用加密的属性文件
5.4 国际化信息
5.4.1 基础知识
5.4.2 MessageSource
5.4.3 容器级的国际化信息资源
5.5 容器事件
5.5.1 Spring事件类结构
5.5.2 解构Spring事件体系的具体实现
5.5.3 一个实例
5.6 小结
第6章 Spring AOP基础
6.1 AOP概述
6.1.1 AOP到底是什么
6.1.2 AOP术语
6.1.3 AOP的实现者
6.2 基础知识
6.2.1 带有横切逻辑的实例
6.2.2 JDK动态代理
6.2.3 CGLib动态代理
6.2.4 AOP联盟
6.2.5 代理知识小结
6.3 创建增强类
6.3.1 增强类型
6.3.2 前置增强
6.3.3 后置增强
6.3.4 环绕增强
6.3.5 异常抛出增强
6.3.6 引介增强
6.4 创建切面
6.4.1 切点类型
6.4.2 切面类型
6.4.3 静态普通方法名匹配切面
6.4.4 静态正则表达式方法匹配切面
6.4.5 动态切面
6.4.6 流程切面
6.4.7 复合切点切面
6.4.8 引介切面
6.5 自动创建代理
6.5.1 实现类介绍
6.5.2 BeanNameAutoProxyCreator
6.5.3 DefaultAdvisorAutoProxyCreator
6.6 小结
第7章 基于@AspectJ和Schema的AOP
7.1 Spring 2.0对AOP的支持
7.2 JDK5.0注解知识快速进阶
7.2.1 了解注解
7.2.2 一个简单的注解类
7.2.3使用注解
7.2.4 访问注解
7.3 着手使用@AspectJ
7.3.1 使用前的准备
7.3.2 一个简单的例子
7.3.3 如何通过配置使用@AspectJ切面
7.4 @AspectJ语法基础
7.4.1 切点表达式函数
7.4.2 在函数入参中使用通配符
7.4.3 逻辑运算符
7.4.4 不同增强类型
7.4.5 引介增强用法
7.5 切点函数详解
7.5.1 @annotation()
7.5.2 execution()
7.5.3 args()和@args()
7.5.4 within()
7.5.5 @within()和@target()
7.5.6 target()的this()
7.6 @AspectJ进阶
7.6.1 切点复合运算
7.6.2 命名切点
7.6.3 增强织入的顺序
7.6.4 访问连接点信息
7.6.5 绑定连接点方法入参
7.6.6 绑定代理对象
7.6.7 绑定类注解对象
7.6.8 绑定返回值
7.6.9 绑定抛出的异常
7.7 基于Schema配置切面
7.7.1 一个简单切面的配置
7.7.2 配置命名切点
7.7.3 各种增强类型的配置
7.7.4 绑定连接点信息
7.7.5 Advisor配置
7.8 混合切面类型
7.8.1 混合使用各种切面类型
7.8.2 各种切面类型总结
7.9 集成AspectJ
7.9.1 使用AspectJ LTW
7.9.2 管理容器外的对象
7.9.3 使用Spring IoC管理AspectJ切面
7.10 小结
第3篇 数据库访问
第8章 Spring对DAO的支持
8.1 Spring的DAO理念
8.2 统一的异常体系
8.2.1 Spring的DAO异常体系
8.2.2 JDBC的异常转换器
8.2.3 其他持久技术的异常转换器
8.3 统一数据访问模板
8.3.1 使用模板和回调机制
8.3.2 Spring为不同持久化技术所提供的模板类
8.4 数据源
8.4.1 配置一个数据源
8.4.2 获取JNDI数据源
8.4.3 Spring的数据源实现类
8.5 小结
第9章 Spring的事务管理
9.1 数据库事务基础知识
9.1.1 何为数据库事务
9.1.2 数据并发的问题
9.1.3 数据库锁机制
9.1.4 事务隔离级别
9.1.5 JDBC对事务支持
9.2 ThreadLocal基础知识
9.2.1 ThreadLocal是什么
9.2.2 ThreadLocal的接口方法
9.2.3 一个TheadLocal实例
9.2.4 Thread同步机制的比较
9.2.5 Spring使用ThreadLocal解决线程安全问题
9.3 Spring对事务管理的支持
9.3.1 事务管理关键抽象
9.3.2 Spring的事务管理器实现类
9.3.3 事务同步管理器
9.3.4 事务传播行为
9.4 编程式的事务管理
9.5 使用XML配置声明式事务
9.5.1 一个需要事务配置的服务接口
9.5.2 使用原始的TransactionProxy FactoryBean
9.5.3 基于tx/aop命名空间的配置
9.6 使用注解配置声明式事务
9.6.1 使用@Transactional注解
9.6.2 通过AspectJ LTW引入事务切面
9.7 JTA事务管理
9.7.1 集成JOTM,在Spring中配置JTA事务
9.7.2 使用Tomcat/JOTM/Spring提供JTA事务
9.7.3 在特定应用服务器使用JTA
9.8 小结
第10章 使用Spring JDBC访问数据库
10.1 使用Spring JDBC
10.1.1 JdbcTemplate小试牛刀
10.1.2 通过JdbcDaoSupport使用JdbcTemplate
10.2 基本的数据操作
10.2.1 更改数据
10.2.2 返回数据库的表自增主键值
10.2.3 批量更改数据
10.2.4 查询数据
10.2.5 查询单值数据
10.2.6 调用存储过程
10.3 BLOB/CLOB类型数据的操作
10.3.1 如何获取本地数据连接
10.3.2 相关的操作接口
10.3.3 插入Lob类型的数据
10.3.4 以块数据方式读取Lob数据
10.3.5 以流数据方式读取Lob数据
10.4 自增键和行集
10.4.1 自增键的使用
10.4.2 以行集返回数据
10.5 其他类型的JdbcTemplate
10.5.1 NamedParameterJdbcTemplate
10.5.2 SimpleJdbcTemplate
10.6 以OO方式访问数据库
10.6.1 使用MappingSqlQuery查询数据
10.6.2 使用SqlUpdate更新数据
10.6.3 使用StoredProcedure执行存储过程
10.6.4 SqlFunction类
10.7 小结
第11章 使用JPA访问数据库
11.1 JPA概述
11.1.1 什么是JPA
11.1.2 JPA的发展及影响
11.1.3 目前已经有哪些实现
11.2 JPA快速进阶
11.2.1 实体对象
11.2.2 使用注解元数据
11.2.3 使用XML元数据
11.2.4 JPA的体系结构及重要的API
11.2.5 JPA的查询语言
11.3 使用LocalEntityManagerFactoryBean
11.3.1 认识JpaTemplate
11.3.2 使用JpaTemplate编写数据访问类
11.3.3 编写相应的配置信息
11.3.4 测试BbtForum
11.4 JVM Class文件字节码转换基础知识
11.4.1 java.lang.instrument包的工作原理
11.4.2 如何向JVM中注册转换器
11.4.3 使用JVM启动参数注册转换器的问题
11.4.4 JPA的ClassTransformer SPI接口
11.5 使用LocalContainerEntityManager FactoryBean
11.5.1 相应的配置信息
11.5.2 使用JVM代理启动参数实施织入器
11.5.3 在测试环境下实施织入器
11.5.4 作为Web应用部署时实施
11.5.5 处理多个持久化单元
11.6 使用原生的JPA
11.7 事务处理
11.8 小结
第12章 整合其他ORM框架
12.1 Spring整合ORM技术
12.2 在Spring中使用Hibernate
12.2.1 配置SessionFactory
12.2.2 使用HibernateTemplate
12.2.3 处理LOB类型数据
12.2.4 添加Hibernate事件监听器
12.2.5 使用原生Hibernate API
12.2.6 使用JPA注解的Hibernate
12.2.7 事务处理
12.2.8 延迟加载的问题
12.3 在Spring中使用iBatis
12.3.1 配置SqlMapClient
12.3.2 使用SqlMapClientTemplate
12.3.3 处理LOB类型数据
12.4 混合使用多种持久化技术
12.4.1 透析Spring中混合持久化技术的使用
12.4.2 一个使用混合持久化技术的实例
12.5 DAO层设计
12.5.1 DAO基类的设计
12.5.2 查询接口方法的设计
12.6 小结
第4篇 业务层应用
第13章 任务调度和异步执行器
13.1 任务调度概述
13.2 Quartz快速进阶
13.2.1 Quartz基础结构
13.2.2 使用SimpleTrigger
13.2.3 使用CronTrigger
13.2.4 使用Calendar
13.2.5 任务调度信息存储
13.3 在Spring中使用Quartz
13.3.1 创建JobDetail
13.3.2 创建Trigger
13.3.3 创建Scheduler
13.4 Spring中使用JDK Timer
13.4.1 Timer和TimerTask
13.4.2 Spring对JDK Timer的支持
13.5 Spring对JDK 5.0 Executor的支持
13.5.1 了解JDK 5.0的Executor
13.5.2 Spring对Executor所提供的抽象
13.6 实际应用中的任务调度
13.6.1 如何产生任务
13.6.2 任务调度对应用程序集群的影响
13.6.3 Web应用程序中调度器的启动和
13.6.2 关闭问题
13.7 小结
第14章 JavaMail发送邮件
14.1 JavaMail快速进阶
14.1.1 JavaMail概述
14.1.2 JavaMail的关键对象
14.1.3 使用JavaMail发送邮件
14.1.4 处理SSL加密传输协议邮件
14.2 Spring的邮件支持
14.2.1 邮件发送高级抽象层
14.2.2 Spring对JavaMail的支持
14.3 发送各种形式的邮件
14.3.1 发送纯文本邮件
14.3.2 发送HTML类型的邮件
14.3.3 发送带内嵌文件的邮件
14.3.4 发送带附件的邮件
14.3.5 发送纯文本和HTML双版本的邮件
14.4 在实际应用中发送邮件
14.4.1 使用邮件模板
14.4.2 异步发送邮件
14.5 小结
第15章 在Spring中使用JMS
15.1 JMS快速进阶
15.1.1 JMS的两种消息类型
15.1.2 JMS受管理的对象
15.1.3 JMS的一些重要接口
15.1.4 JMS消息的结构
15.1.5 消息收发的机制
15.1.6 发送消息
15.1.7 接收消息
15.2 JMS提供者
15.2.1 JMS提供者概述
15.2.2 使用ActiveMQ
15.3 Spring对JMS的支持
15.3.1 JMS模板类
15.3.2 JMS异常映射
15.4 使用回调接口发送/接收消息
15.4.1 使用send()发送消息
15.4.2 使用receive()接收消息
15.4.3 使用execute()方法
15.5 使用消息转换器发送/接收消息
15.5.1 消息转换器
15.5.2 发送POJO消息
15.5.3 接收POJO消息
15.6 消息过滤及异步消息接收
15.6.1 对消息进行过滤接收
15.6.2 消息监听器容器
15.6.3 异步消息接收
15.6.4 异步消息接收适配器
15.7 JMS事务管理
15.7.1 本地事务
15.7.2 JTA事务
15.7.3 消息重复接收问题
15.8 小结
第16章 在Spring中开发Web Service
16.1 Web Service简介
16.1.1 Web Service相关概念
16.1.2 SOAP——简单对象传输协议
16.1.3 WSDL——Web Service描述语言
16.1.4 UDDI——统一描述、发现和集成
16.2 XFire简介
16.2.1 XFire特性
16.2.2 XFire 体系及重要API
16.2.3 XFire类库说明
16.3 将POJO Bean导出为Web Service
16.3.1 使用导出器导出Web Service
16.3.2 配置web.xml
16.3.3 使用JSR 181注解导出Web Service
16.4 各种客户端调用方式
16.4.1 使用服务端的窄接口类
16.4.2 使用WSDL文件构造客户端程序
16.4.3 根据WSDL生成客户端代码
16.5 Web Service的测试
16.5.1 基于SOAP报文的纯服务端测试
16.5.2 在JVM模式通过客户端进行测试
16.6 Web Service安全
16.6.1 认识WS-Security
16.6.2 XFire应用WS-Security的总体方案
16.7 使用WS-Security
16.7.1 准备工作
16.7.2 使用用户名/密码进行身份认证
16.7.3 对SOAP报文进行数字签名
16.7.4 对SOAP报文体进行加密
16.7.5 组合安全策略
16.8 小结
第17章 使用Acegi实施应用系统安全
17.1 认识Acegi
17.1.1 Acegi概述
17.1.2 Acegi体系结构
17.1.3 重要组件类介绍
17.1.4 用户认证过程
17.1.5 安全对象访问控制
17.1.6 Acegi版本升级的一些重大变化
17.2 将Acegi集成到Web应用程序中
17.2.1 代理Acegi的过滤器
17.2.2 使用代理过滤器链对处理HTTP请求
17.3 身份认证管理
17.3.1 基于内存存储用户信息的身份认证
17.3.2 基于数据库存储用户信息的认证
17.3.3 密码加密问题
17.3.4 成功登录系统的后置处理
17.3.5 在多个请求之间共享
17.3.5 SecurityContext
17.3.6 退出系统的后置处理
17.3.7 实施Remember-Me认证
17.4 安全对象访问控制
17.4.1 匿名用户权限信息
17.4.2 URL资源访问控制
17.4.3 异常转换过滤器
17.4.4 业务类方法访问控制
17.5 其他
17.5.1 Acegi标签库
17.5.2 Session并发控制
17.5.3 HTTPS安全通道
17.6 小结
第18章 动态语言支持
18.1 动态语言介绍
18.1.1 动态语言的特性及适用场合
18.1.2 Ruby快速入门
18.1.3 Groovy快速入门
18.1.4 BeanShell快速入门
18.2 在Spring中使用动态语言
18.2.1 Spring对动态语言的支持
18.2.2 基于JRuby的Bean
18.2.3 基于Groovy的Bean
18.2.4 基于BeanShell的Bean
18.3 其他支持功能
18.3.1 动态刷新
18.3.2 内联脚本
18.4 小结
第5篇 展现层应用
第19章 Spring MVC之一
19.1 Spring MVC概述
19.1.1 体系结构
19.1.2 认识并配置DispatcherServlet
19.1.3 一个包含以上步骤的实例
19.2 将请求映射到处理器
19.2.1 HandlerExecutionChain处理器链
19.2.2 处理器映射HandlerMapping
19.2.3 处理器的拦截器
19.2.4 多个处理器映射器
19.3 各种类型的控制器
19.3.1 参数映射控制器
19.3.2 文件名映射控制器
19.3.3 简单类型控制器
19.3.4 命令控制器
19.3.5 表单控制器
19.3.6 中文乱码问题
19.3.7 向导控制器
19.3.8 多动作控制器
19.3.9 一次性控制器
19.4 使用Spring文件上传功能
19.4.1 配置multipart请求解析器
19.4.2 编写控制器和文件上传表单页面
19.5 本地化解析
19.5.1 使用Cookie本地化解析器
19.5.2 使用Session本地化解析器
19.5.3 使用本地化更改拦截器
19.6 使用主题
19.6.1 主题资源及样式文件的组织
19.6.2 主题样式的引用
19.6.3 主题资源和主题解析器
19.7 异常处理
19.8 小结
第20章 Spring MVC之二
20.1 视图和视图解析器
20.1.1 认识视图
20.1.2 认识视图解析器
20.1.3 使用视图解析器
20.2 Spring MVC表单标签
20.2.1 form标签
20.2.2 输入组件标签
20.2.3 单选框和复选框组件标签
20.2.4 下拉框组件标签
20.2.5 错误标签
20.3 使用模板视图
20.3.1 FreeMarker概述
20.3.2 常见的FreeMarker特殊标记
20.3.3 编写渲染模型数据的模型
20.3.4 配置FreeMarker环境和视图
20.3.5 使用Spring宏
20.3.6 使用Velocity模板
20.4 使用Tiles进行页面布局
20.4.1 编写一个Tiles模板
20.4.2 使用Tiles视图
20.5 产出非HTML的输出
20.5.1 使用PDF文档进行输出
20.5.2 使用Excel进行输出
20.6 小结
第21章 集成其他Web框架
21.1 集成Struts 2
21.1.1 Struts 2概述
21.1.2 集成Struts 2的步骤
21.1.3 注册用户实例
21.2 集成Tapestry
21.2.1 Tapestry为集成Spring提供的类
21.2.2 Tapestry集成Spring的具体配置步骤
21.3 集成JSF
21.3.1 一个简单的JSF程序
21.3.2 使用JSF-Spring集成Spring
21.4 小结
第6篇 其他
第22章 Spring应用的测试
22.1 单元测试和集成测试
22.1.1 单元测试
22.1.2 集成测试
22.2 JUnit测试框架
22.2.1 认识JUnit框架
22.2.2 测试固件(Fixture)
22.2.3 测试用例(TestCase)
22.2.4 测试套件(TestSuite)
22.2.5 测试运行器
22.3 进行单元测试
22.3.1 如何创建模拟类
22.3.2 对UserServiceImpl进行单元测试
22.3.3 Spring提供的模拟类
22.4 在Spring中进行集成测试
22.4.1 传统集成测试的不足之处
22.4.2 Spring提供的测试帮助类
22.4.3 一般集成测试
22.4.4 方便地恢复测试数据库现场
22.4.5 注解驱动的集成测试
22.5 批量执行测试用例
22.6 小结
第23章 Spring工具类盘点
23.1 文件资源操作
23.1.1 加载文件资源
23.1.2 文件操作
23.2 Web相关工具类
23.2.1 操作Servlet API的工具类
23.2.2 Spring所提供的过滤器和
23.2.2 监听器
23.3 特殊字符转义
23.3.1 HTML特殊字符转义
23.3.2 JavaScript特殊字符转义
23.3.3 SQL特殊字符转义
23.4 杂项
23.4.1 方法入参检测工具类
23.4.2 操作DOM的工具类
23.5 小结
附录A 各种数据库连接配置及驱动
附录B IDE开发环境设置
