《Spring框架高级编程》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:(美)约翰逊(Johnson,R.)等著;蒋培等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2006
  • ISBN:7111186389
  • 页数:471 页
图书介绍:本书介绍使用Spring框架开发高级应用程序。

译者序 1

前言 1

作者简介 1

致谢 1

第1章 Spring框架概述 1

1.1 为什么要Spring 1

1.1.1 J2EE传统方式的问题 1

1.1.2 轻量级框架 3

1.1.3 进入Spring 3

1.2 Spring的价值 4

1.3 上下文中的Spring 6

1.3.1 技术 6

1.3.2 技巧 12

1.3.3 与其他框架的关系 13

1.4 使用Spring构造应用程序 15

1.4.1 结构层次图 15

1.4.2 持久性和集成 17

1.4.3 业务服务对象 19

1.4.4 表示 19

1.5 前景 21

1.5.1 发布日程 21

1.5.2 Java和J2EE的进展 21

1.5.3 技术趋势 22

1.5.4 标准与源码公开 22

1.6 Spring项目和社区 23

1.6.1 历史 23

1.6.2 模块摘要 24

1.6.3 支持的环境 26

1.7 小结 27

第2章 Bean工厂与应用程序上下文 28

2.1 控制反转和依赖注入 28

2.1.1 不同形式的依赖注入 31

2.1.2 在设置器注入和构造函数注入之间决定 33

2.2 容器 34

2.2.1 Bean工厂 34

2.2.2 应用程序上下文 35

2.2.3 启动容器 36

2.2.4 使用来自工厂的Bean 38

2.2.5 XML Bean配置 38

2.2.6 基本的Bean定义 39

2.2.7 指定Bean的依赖 41

2.2.8 管理Bean生命周期 47

2.2.9 对服务和资源访问的抽象 49

2.2.10 重用Bean定义 53

2.2.11 使用后置处理器处理定制的Bean和容器 55

2.3 小结 60

第3章 高级容器概念 62

3.1 低层资源的抽象 62

3.1.1 应用程序上下文作为ResourceLoader 63

3.1.2 应用程序上下文作为消息源 65

3.2 应用程序事件 66

3.3 管理容器 68

3.3.1 ApplicationContext构造函数中的资源位置路径 68

3.3.2 应用程序上下文的声明式用法 69

3.3.3 将容器定义划分到多个文件 71

3.3.4 处理组件的策略 72

3.3.5 用于访问容器的单态 74

3.4 一些方便的工厂Bean 74

3.4.1 PropertyPathFactoryBean 75

3.4.2 FieldRetrievingFactoryBean 76

3.4.3 MethodInvokingFactoryBean 76

3.5 Spring提供的属性编辑器 77

3.6 测试策略 77

3.6.1 单元测试 77

3.6.2 使用Spring容器的测试 80

3.7 XML的替代品 82

3.7.1 来自Properties文件的定义 82

3.7.3 其他格式 83

3.7.2 编程式Bean定义 83

3.8 参考文献 84

3.9 小结 84

第4章 Spring与AOP 85

4.1 目标 85

4.2 假设 86

4.3 例子 86

4.4 Spring的AOP框架 89

4.4.1 拦截器链 89

4.4.2 赞成与反对 89

4.4.3 通知 90

4.4.4 切点 94

4.4.5 通知器(advisor) 98

4.4.6 与Spring IoC容器的集成 99

4.4.8 编程式的代理创建 109

4.4.7 在运行时间检验并处理代理状态 109

4.5 使用Spring的AOP框架的高级特性 110

4.5.1 TargetSources 110

4.5.2 及早终止拦截器链 115

4.5.3 使用介绍 115

4.5.4 暴露当前的代理 117

4.5.5 暴露当前的MethodInvocation 117

4.5.6 理解代理类型 118

4.5.7 调试与测试 119

4.5.8 其他 121

4.6 与其他AOP框架集成 123

4.6.1 目标 123

4.6.2 集成AspectJ 123

4.6.3 AspectWerkz 126

4.7 参考文献 127

4.8 小结 127

第5章 DAO支持与JDBC框架 128

5.1 数据访问对象模式 128

5.2 Spring的JDBC框架概述 129

5.2.1 起因:直接使用JDBC的问题 130

5.2.2 Spring可以如何帮助 131

5.2.3 简单的例子 131

5.3 建立样本应用程序的数据访问层 132

5.3.1 样本应用程序的数据模型 132

5.3.2 DataSource 134

5.3.3 异常转译 135

5.4.1 回调方法的使用 137

5.4 使用JdbcTemplate的操作 137

5.4.2 JdbcTemplate的方便方法 138

5.4.3 使用JdbcTemplate的基本查询 138

5.4.4 使用JdbcTemplate的基本更新 139

5.4.5 JdbcTemplate的高级用法 140

5.4.6 对RowSet的支持 141

5.5 使用RDBMS操作类 142

5.5.1 SqlQuery和MappingSqlQuery 142

5.5.2 使用SqlUpdate插入和更新 144

5.5.3 使用UpdatableSqlQuery更新ResultSet 145

5.5.4 生成主键 146

5.5.5 检索数据库生成的键 147

5.5.6 调用存储过程 148

5.6 高级概念 150

5.6.1 在应用程序服务器中运行Spring JDBC 150

5.6.2 使用定制的异常转译 151

5.6.3 读写LOB数据 153

5.6.4 批量更新 158

5.6.5 存储过程的高级用法 159

5.7 其他的考虑事项 163

5.7.1 性能 163

5.7.2 何时使用JDBC和O/R映射 163

5.7.3 JDBC版本和J2EE版本 163

5.8 小结 164

6.1.1 什么是事务 165

6.1.2 ACID属性 165

6.1 背景 165

第6章 事务和资源管理 165

6.1.3 并发控制 167

6.2 事务与J2EE 167

6.2.1 局部事务 167

6.2.2 全局/分布式事务 167

6.2.3 事务传播 168

6.2.4 事务划分 168

6.3 Spring事务支持的例子 168

6.4 Spring的事务抽象介绍 170

6.4.1 事务控制选择的概述 170

6.4.2 事务定义 171

6.4.3 事物状态 174

6.4.4 事务划分策略 174

6.4.5 事物管理策略 185

6.5 DataSource声明 192

6.5.1 本地非缓冲 192

6.5.2 本地缓冲 193

6.5.3 JNDI 193

6.5.4 在本地DataSource和JNDI DataSource之间选择 194

6.6 小结 194

第7章 对象/关系映射 195

7.1 背景知识 195

7.1.1 基本的O/R映射 195

7.1.2 对象查询语言 196

7.1.3 透明持久性 196

7.1.4 何时选择O/R映射 197

7.2 Spring中的O/R映射支持 197

7.2.2 事务管理 198

7.2.1 数据访问对象 198

7.3 iBATIS SQL Maps 199

7.3.1 映射文件 199

7.3.2 DAO实现 201

7.3.3 在Spring上下文中设置 202

7.3.4 事务管理 203

7.3.5 iBATIS概要 204

7.4 Hibernate 205

7.4.1 映射文件 205

7.4.2 DAO实现 206

7.4.3 Spring上下文中的设置 209

7.4.4 事务管理 211

7.4.5 Open Session in View 216

7.4.6 BLOB/CLOB处理 218

7.4.7 Hibernate:小结 220

7.5 JDO 221

7.5.1 持久性对象的生命周期 221

7.5.2 DAO实现 222

7.5.3 在Spring上下文中设置 223

7.5.4 事务管理 224

7.5.5 PersistenceManager的生命周期 225

7.5.6 Open PersistenceManager in View 226

7.5.7 JDO方言 227

7.5.8 JDO:小结 228

7.6 其他O/R映射工具 229

7.6.1 Apache OJB 229

7.6.2 TopLink 230

7.7 小结 231

7.6.3 Cayenne 231

7.6.4 JSR-220持久性 231

第8章 轻量级远程处理 233

8.1 概念和范围 233

8.2 一般的配置风格 234

8.3 Hessian和Burlap 235

8.3.1 访问一个服务 236

8.3.2 导出一个服务 238

8.4 HTTP调用器 239

8.4.1 访问一个服务 239

8.4.2 导出一个服务 240

8.4.3 定制化选项 241

8.5 RMI 242

8.5.1 访问一个服务 243

8.5.2 Stub查询策略 244

8.5.3 导出一个服务 246

8.5.4 定制化选项 246

8.5.5 RMI-IIOP 247

8.6 通过JAX-RPC的Web服务 247

8.6.1 访问一个服务 248

8.6.2 导出一个服务 250

8.6.3 定制的类型映射 252

8.7 小结 253

第9章 支持性服务 255

9.1 JMS 255

9.1.1 引言 255

9.1.2 Spring的JMS支持的起因 256

9.1.3 通过模板的JMS访问 257

9.1.4 异常处理 258

9.1.5 ConnectionFactory管理 259

9.1.6 消息转换器 259

9.1.7 目的管理 260

9.1.8 事务管理 261

9.1.9 JmsGatewaySupport 261

9.1.10 前景 263

9.2 使用Spring的调度 263

9.2.1 Timer与Quartz 263

9.2.2 Timer 263

9.2.3 Quartz 265

9.3 使用Spring发送电子邮件 269

9.3.1 入门指南 270

9.3.2 重用现有的邮件会话 271

9.3.3 使用COS的邮件发送 271

9.3.4 通用的邮件管理器 271

9.4 脚本 275

9.4.1 一致性模型 275

9.4.2 其他脚本语言 278

9.5 小结 279

第10章 Spring的Acegi Security系统 280

10.1 企业级应用程序的安全选择 280

10.1.1 典型的需求 280

10.1.2 Acegi Security简介 281

10.1.3 Java身份验证和授权服务 284

10.1.4 Servlet规范 286

10.2.1 身份验证 287

10.2 Acegi Security的基础 287

10.2.2 存储身份验证对象 290

10.2.3 授权 292

10.2.4 域对象实例的安全 292

10.3 范例代码 295

10.3.1 范例介绍 295

10.3.2 安全所不知道的实现 295

10.3.3 安全方法 298

10.3.4 身份验证 298

10.3.5 授权 299

10.4 小结 302

11.1 对EJB的需要做出决断 303

第11章 Spring与EJB 303

11.2 访问EJB 304

11.2.1 样板方法 304

11.2.2 Spring的方法 305

11.3 用Spring实现EJB 310

11.3.1 无状态会话Bean 310

11.3.2 有状态会话Bean 313

11.3.3 消息驱动的Bean 314

11.3.4 几句题外话:谈谈XDoclet 315

11.4 单态容器访问,是好还是坏 315

11.4.1 ContextSingletonBean-FactoryLocator和SingletonBean-FactoryLocator 316

11.4.2 共享的上下文作为Web应用程序的应用程序上下文的双亲 318

11.5.2 使用模仿的EJB容器 321

11.5.1 在POJO委托中实现业务功能 321

11.5 测试关注点 321

11.4.3 使用来自EJB的共享的上下文 321

11.5.3 应用程序服务器内部的集成测试 322

11.6 小结 323

第12章 Web MVC框架 324

12.1 简单的例子 324

12.2 一般的体系结构 326

12.2.1 Web MVC概念 326

12.2.2 使用分发器和控制器的通用Web MVC 327

12.2.3 好的Web MVC框架的需求 327

12.2.4 Spring的Web MVC的等价物 328

12.3 基础设施组件 330

12.3.1 DispatcherServlet 330

12.3.2 WebApplicationContext 333

12.4 处理请求有关的工作流 334

12.5 Spring MVC Web应用程序的一般布局 336

12.6 HandlerMapping 337

12.6.1 BeanNameUrlHandler-Mapping 338

12.6.2 SimpleUrlHandlerMapping 338

12.6.3 CommonsPathMapUrlHandler-Mapping 339

12.6.4 多个HandlerMapping 340

12.7 HandlerExecutionChain和拦截器 341

12.7.1 WebContentInterceptor 342

12.7.2 UserRoleAuthorizationInterceptor 343

12.7.3 Spring MVC提供的其他处理器拦截器 343

12.8 处理器及其适配器 343

12.9 ModelAndView和ViewResolvers 343

12.9.2 BeanNameViewResolver和XmlViewResolver 344

12.9.1 UrlBasedViewResolver 344

12.9.3 ResourceBundleViewResolver 345

12.9.4 视图解析器链接 345

12.10 地区值的改变和解析 347

12.11 HandlerExceptionResolvers 348

12.12 控制器 350

12.12.1 WebContentGenerator 350

12.12.2 AbstractController 350

12.12.3 UrlFilenameViewController 351

12.12.4 ParameterizableViewController 351

12.12.5 MultiActionController 352

12.13 数据绑定 352

12.14.1 使用AbstractController查看演出列表 354

12.14 使用控制器的实际例子 354

12.14.2 预订 356

12.15 向导功能 362

12.15.1 基本配置 362

12.15.2 模板方法 363

12.15.3 向导流程 363

12.15.4 页面改变、编号和其他动作 363

12.16 扩展Spring处理器的基础设施 365

12.17 上传文件 365

12.17.1 配置多部分解析器 365

12.17.2 创建表单来上传文件 366

12.17.3 处理上传的数据 366

12.18 测试控制器 367

12.18.1 无须应用程序上下文的测试 368

12.18.2 使用模仿对象的更广泛测试 369

12.18.3 使用完全的应用程序上下文测试 370

12.18.4 测试Web应用程序的其他方法 370

12.19 小结 371

第13章 Web视图技术 372

13.1 一个例子 372

13.1.1 通用配置 373

13.1.2 JSP 373

13.1.3 FreeMarker 373

13.1.4 使用iText生成PDF 374

13.2 选择技术时的注意事项 375

13.3 视图对象和模型 375

13.4 AbstractView提供的特性 376

13.4.1 使用RedirectView发布新的请求 377

13.4.2 使用视图前缀发布转向或者重定向 378

13.5 JSP 379

13.5.1 配置应用程序以使用JSP 379

13.5.2 使用定制标记创建表单 380

13.5.3 使用标记文件创建可重用的元素 385

13.6 Velocity和FreeMarker 385

13.6.1 配置视图解析器 386

13.6.2 使用表单简化宏 388

13.7 Tiles 390

13.8 基于XML和XSLT的视图 393

13.9 Excel和基于其他文档的视图 394

13.9.1 从表演列表生成Excel文件 394

13.9.2 以模板作为Excel文件的基础 395

13.9.4 使用HandlerInterceptor区分HTML和Excel 396

13.9.3 基于其他文档的视图 396

13.10 实现定制视图 398

13.10.1 View和AbstractView 398

13.10.2 实现从数据对象生成XML的视图 398

13.10.3 实现定制视图时的注意事项 400

13.11 小结 400

第14章 与其他Web框架集成 401

14.1 选择MVC框架时的注意事项 401

比较传统的Web MVC框架 401

14.2 与Spring集成:核心概念 408

14.3 WebWork集成 410

设置ObjectFactory 410

14.4 Struts集成 411

14.4.1 使用AetionSupport 412

14.4.2 使用DelegationRequestProcessor和DelegationActionProxy 413

14.4.3 使用自动装配的基本动作 415

14.5 Tapestry集成 416

14.5.1 为Tapestry准备Bean 416

14.5.2 页面类 417

14.5.3 页面定义 417

14.5.4 页面模板 418

14.5.5 Tapestry集成的最终思考 420

14.6 JSF集成 420

14.7 小结 421

第15章 样本应用程序 422

15.1 服务器技术的选择 422

15.2 应用层 422

15.3.1 数据模型 423

15.3 持久性层 423

15.3.2 域对象模型 425

15.3.3 对象/关系映射 426

15.3.4 DAO实现 429

15.3.5 数据访问上下文 430

15.4 业务服务层 431

15.4.1 服务 431

15.4.2 应用程序上下文 432

15.5 Web层 433

15.5.1 应用程序流程 434

15.5.2 通过web.xml配置应用程序 434

15.5.3 Web控制器 435

15.5.4 视图技术 437

15.6.2 数据库变化 438

15.6 与J2EE设计和开发实现的比较 438

15.6.1 更简单的技术 438

15.7 服务器配置 439

15.7.1 MySQL 439

15.7.2 Tomcat 439

15.8 构建和部署 440

15.8.1 创建和载入数据库表 440

15.8.2 构建应用程序并部署到Tomcat服务器 440

15.9 小结 440

第16章 结论 441

16.1 Spring解决的问题 441

16.2 Spring解决方案 441

16.3.1 技术选择 443

16.3 Spring开发的指导方针 443

16.3.2 层与层 444

16.3.3 构造应用程序 448

16.3.4 测试应用程序 451

16.4 相关项目 452

16.4.1 Spring的Acegi Security 452

16.4.2 其他项目 452

16.5 非J2EE环境中的Spring 453

16.6 发现更多 454

16.6.1 书籍和文章 454

16.6.2 在线资源 454

16.6.3 样本应用程序 454

16.7 前景 455

A.2 用户群体 457

A.2.1 公众Internet用户 457

附录A 样本应用程序的需求 457

A.1 概述 457

A.2.2 售票处用户 458

A.2.3 系统管理员 458

A.3 假设 458

A.4 范围限制 459

A.5 交付时间表 459

A.6 Internet用户界面 459

A.6.1 基本工作流 459

A.6.2 错误处理 460

A.6.3 应用程序屏幕 460

A.7 非功能性需求 469

A.8 硬件和软件环境 470