《Spring高级程序设计》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(英)JanMachacekAleksaVukoticAnirvanChakraborty等著;马连浩,栗磊,张龙等译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2009
  • ISBN:9787115212047
  • 页数:764 页
图书介绍:本书讲述了Spring 2.5的最新特性。主要内容包括使用Spring的IoC,进行面向方面的Spring编程,使用Spring的动态脚本语言特性,Spring对JDBC框架、 Hibernate等的支持,Spring的MVC框架等。

第一部分 Spring入门 2

第1章 Spring简介 2

1.1 Spring是什么 2

1.1.1 依赖注入之外的特性 4

1.1.2 使用Spring进行面向方面编程 4

1.1.3 数据访问 5

1.1.4 简化与整合Java EE 5

1.1.5 基于Spring的任务调度 6

1.1.6 Spring对邮件的支持 6

1.1.7 动态语言 6

1.1.8 远程访问 6

1.1.9 事务管理 7

1.1.10 Spring MVC框架 7

1.1.11 Spring Web Flow 7

1.1.12 AJAX技术 7

1.1.13 国际化 8

1.1.14 简化异常处理 8

1.2 Spring项目 8

1.2.1 Spring的起源 8

1.2.2 Spring.NET 8

1.2.3 Spring IDE 9

1.2.4 Spring安全系统(原Acegi) 9

1.2.5 Spring的替代方案 9

1.3 示例代码 10

1.4 小结 10

第2章 Spring入门 11

2.1 获取Spring框架 11

2.1.1 从CVS上签出Spring 11

2.1.2 从源码构建Spring 12

2.1.3 检查Spring发布包 13

2.1.4 Spring发布包 13

2.1.5 Spring依赖的包 14

2.1.6 示例应用 16

2.1.7 配置Spring和IDE 18

2.2 HelloWorld示例 20

2.3 Spring版本的“Hello,World”示例 23

2.3.1 依赖注入 24

2.3.2 Spring的侵入性 26

2.4 小结 26

第3章 控制反转 27

3.1 控制反转和依赖注入 27

3.2 控制反转的类型 27

3.2.1 上下文依赖查找 29

3.2.2 构造方法依赖注入 30

3.2.3 设置方法依赖注入 31

3.2.4 依赖注入与依赖查找 32

3.2.5 设置方法注入与构造方法注入 33

3.3 Spring中的控制反转 34

3.4 基于Spring的依赖注入 34

3.4.1 bean和BeanFactory 34

3.4.2 BeanFactory实现 35

3.4.3 XML bean定义 36

3.4.4 构造方法注入 37

3.4.5 注入参数 40

3.4.6 理解bean的命名 50

3.4.7 bean的实例化模式 52

3.4.8 解析依赖 55

3.4.9 bean的自动装配 57

3.4.10 依赖检查 61

3.4.11 bean的继承 62

3.5 小结 64

第4章 进阶 66

4.1 Spring对应用程序可移植性的影响 67

4.2 管理bean的生命周期 67

4.2.1 嵌入bean的创建 68

4.2.2 嵌入bean的销毁 74

4.3 让bean可被Spring感知 79

4.3.1 使用BeanNameAware接口 80

4.3.2 使用BeanFactoryAware接口 81

4.4 使用方法注入(method injection) 83

4.4.1 查找方法注入 83

4.4.2 方法替换 88

4.5 使用FactoryBean接口 91

4.5.1 MessageDigestFactoryBean类 91

4.5.2 直接访问FactoryBean 94

4.6 BeanFactoryPostProcessor类 94

4.7 JavaBean的属性修改器 101

4.7.1 内建的PropertyEditor 101

4.7.2 创建自定义PropertyEditor 104

4.8 BeanPostProcessor类 108

4.8.1 实现一个BeanPostProcessor 110

4.8.2 使用BeanPostProcessor类的实机选择 114

4.9 Spring ApplicationContext 115

4.9.1 ApplicationContext的实现类 115

4.9.2 使用ApplicationContext-Aware 116

4.9.3 控制bean的初始化 117

4.9.4 使用基于注解的配置 118

4.9.5 使用MessageSource进行国际化 123

4.9.6 在独立应用中使用MessageSource 130

4.9.7 MessageSourceResolvable接口 130

4.9.8 使用应用程序事件 130

4.9.9 对于事件用法的考虑 132

4.9.10 访问资源 133

4.10 小结 134

第5章 Spring AOP基础 135

5.1 AOP概念 136

5.2 AOP的类型 136

5.2.1 静态AOP 137

5.2.2 动态AOP 137

5.2.3 选择一种AOP类型 137

5.3 Spring中的AOP 137

5.3.1 AOP联盟 138

5.3.2 AOP的Hello World 138

5.3.3 Spring AOP架构 140

5.3.4 ProxyFactory类 140

5.3.5 在Spring中创建通知 141

5.4 Spring里的通知者和切入点 155

5.4.1 切入点接口 156

5.4.2 使用ComposablePointcut 172

5.4.3 切入点总结 175

5.5 代理详解 176

5.5.1 理解代理 176

5.5.2 使用JDK动态代理 176

5.5.3 使用CGLIB代理 177

5.5.4 两者的性能比较 177

5.5.5 选用代理 180

5.6 小结 180

第6章 AOP进阶 182

6.1 @AspectJ注解 182

6.2 @AspectJ方面详解 186

6.2.1 切入点 186

6.2.2 切入点表达式 189

6.2.3 探讨切入点表达式 191

6.2.4 在XML中使用@Pointcuts 194

6.2.5 通知的类型 194

6.2.6 参数绑定 201

6.2.7 引入 202

6.2.8 方面的生命周期 208

6.3 AOP的框架服务 209

6.3.1 使用AOP命名空间创建第一个方面 209

6.3.2 AOP命名空间中的切入点 211

6.3.3 使用AOP命名空间创建通知 212

6.3.4 AOP命名空间中的引入 217

6.4 风格选择 219

6.5 使用Spring AOP代理 220

6.6 AspectJ集成 225

6.6.1 创建第一个AspectJ方面 225

6.6.2 编译示例程序 227

6.6.3 AspectJ方面的作用域 229

6.7 加载时织入 230

6.7.1 第一个加载时织入示例 230

6.7.2 LoadTimeWeaver的查找策略 232

6.8 AOP实践 232

6.9 小结 235

第7章 Spring schema与命名空间 236

7.1 新配置的缘由 236

7.2 Spring 2.5包含的schema 238

7.2.1 beans schema 238

7.2.2 上下文schema 239

7.2.3 util schema 239

7.2.4 tx schema 242

7.2.5 aop schema 242

7.2.6 jee schema 242

7.2.7 lang schema 243

7.3 schema背后 244

7.4 自定义schema 246

7.5 IDE配置 249

7.6 小结 252

第8章 Spring模式 253

8.1 目录结构 253

8.1.1 简单应用 253

8.1.2 复杂应用 255

8.1.3 打包和命名 255

8.2 设计模式简介 255

8.2.1 面向接口编程 256

8.2.2 创建模式 256

8.2.3 结构模式 260

8.2.4 行为模式 262

8.3 Spring应用模式 264

8.3.1 分层设计 265

8.3.2 高性能分页 266

8.3.3 多错误报告 268

8.3.4 用户界面事务 271

8.3.5 后台进程 274

8.3.6 邮件通知 278

8.3.7 错误收集和日志 280

8.4 小结 283

第二部分 数据访问 286

第9章 Spring对JDBC的支持 286

9.1 JDBC的主要概念 286

9.1.1 使用DriverManager和Connection 288

9.1.2 使用PreparedStatement 289

9.1.3 使用CallableStatement类 292

9.1.4 其他JDBC概念 293

9.2 Spring对数据访问支持的概念 293

9.3 Spring对JDBC数据访问的支持 294

9.4 使用JdbcTemplate类 294

9.4.1 JdbcTemplate类的execute方法 296

9.4.2 JdbcTemplate类的query方法和该方法的扩展 299

9.4.3 JdbcTemplat类的update方法 303

9.4.4 JdbcTemplate类的batchUpdate方法 304

9.5 RdbmsOperation子类 305

9.5.1 SqlUpdate子类 306

9.5.2 BatchSqlUpdate子类 311

9.5.3 SqlCall类和StoredProcedure子类 312

9.5.4 SqlQuery类和它的子类 314

9.5.5 JdbcTemplate类和RdbmsOperation类的比较 321

9.6 大二进制对象 321

9.7 JdbcDaoSupport类 324

9.8 简单的Spring JDBC 326

9.8.1 SimpleJdbcTemplate类 326

9.8.2 SimpleJdbcCall类 329

9.8.3 SimpleJdbcInsert类 331

9.8.4 SimpleJdbcDaoSupport类 332

9.9 小结 333

第10章 集成iBATIS 334

10.1 iBATIS简述 334

10.1.1 iBATIS版本 334

10.1.2 基础架构和配置 335

10.2 映射文件 335

10.2.1 sqlMap文件 337

10.2.2 配置iBATIS和Spring 339

10.3 查询数据 341

10.3.1 简单查询操作 341

10.3.2 一对一查询操作 344

10.3.3 一对多查询操作 348

10.3.4 多对多查询操作 350

10.4 更新数据 350

10.5 删除数据 353

10.6 插入数据 354

10.7 iBATIS缺少的特性 356

10.8 整体性能 357

10.9 小结 358

第11章 Spring对Hibernate的支持 359

11.1 Hibernate入门 359

11.2 Hibernate打包 360

11.3 Hibernate支持的介绍 361

11.3.1 使用Hibernate Session 363

11.3.2 使用HibernateDaoSupport类 366

11.3.3 HibernateTemplate和Session间的选择 368

11.4 在企业级应用程序中使用Hibernate 372

11.4.1 阻止更新脏数据 372

11.4.2 对象等价性 375

11.4.3 事务支持 378

11.4.4 延迟加载 382

11.5 处理大数据集 392

11.6 处理大对象 394

11.7 使用Hibernate处理其他DAO代码 397

11.8 小结 398

第三部分 企业级应用组件 400

第12章 基于Spring的任务调度 400

12.1 使用JDK Timer调度任务 401

12.1.1 Timer触发器类型 401

12.1.2 创建一个简单任务 401

12.1.3 Spring对JDK Timer调度的支持 404

12.2 使用OpenSymphony Quartz来调度任务 409

12.2.1 Quartz简介 410

12.2.2 Spring对Quartz的支持 418

12.3 任务调度时需考虑的因素 423

12.3.1 选择一个调度器 423

12.3.2 剥离Job类中的任务逻辑 424

12.3.3 任务执行和线程池 424

12.4 小结 428

第13章 Spring的邮件支持 429

13.1 Spring Mail API结构 430

13.2 发送简单的电子邮件 430

13.2.1 编程式构造和发送电子邮件 431

13.2.2 声明式构造电子邮件 433

13.3 构造并发送MIME消息 436

13.3.1 发送基本的HTML消息 438

13.3.2 发送带有内嵌图片的HTML消息 439

13.3.3 发送带有附件的消息 441

13.3.4 发送带有可替换纯文本的HTML消息 442

13.3.5 发送复杂MIME消息 445

13.4 深入了解企业级电子邮件处理 449

13.5 小结 458

第14章 动态语言 459

14.1 支持的动态语言概览 459

14.1.1 BeanShell 459

14.1.2 Groovy 461

14.1.3 JRuby 462

14.2 使用动态语言定义Spring bean 463

14.2.1 动态语言支持的幕后 465

14.2.2 代理动态语言bean 466

14.2.3 性能 466

143 可刷新bean(refreshable bean) 468

14.4 基于BeanShell的bean 470

14.5 基于JRuby的bean 472

14.6 基于Groovy的bean 473

14.7 动态语言在Spring程序中的典型应用 473

14.8 小结 477

第四部分 Java EE 5应用开发 480

第15章 Spring远程访问 480

15.1 Spring Remoting架构 481

15.2 远程方法调用 482

15.2.1 开放任意的服务 482

15.2.2 通过代理访问RMI服务 484

15.2.3 开放CORBA服务 486

15.2.4 访问CORBA服务 488

15.3 使用JAX-RPC实现Web服务 490

15.3.1 Apache Axis简介 490

15.3.2 使用ServletEndpoint-Support创建Web服务 490

15.3.3 使用代理访问RPC风格的Web服务 494

15.3.4 与Axis服务的JavaBean交互 497

15.4 使用JAX-WS Web服务 500

15.4.1 通过SimpleJaxWsService-Exporter公开Web服务 501

15.4.2 使用XFire公开Web服务 501

15.4.3 访问JAX-WS Web服务 503

15.4.4 从其他客户端访问Java Web服务 504

15.5 使用HTTP Invoker创建Web服务 507

15.5.1 开发简单服务 508

15.5.2 通过代理访问HTTP Invoker服务 510

15.5.3 在HTTP Invoker服务中使用任意对象 511

15.5.4 使用HTTP基本认证 513

15.6 远程架构的选择 516

15.7 小结 517

第16章 事务管理 518

16.1 Spring事务抽象层简介 518

16.2 分析事务属性 519

16.2.1 探索TransactionDefinition接口 519

16.2.2 使用TransactionStatus接口 520

16.2.3 PlatformTransactionManager的实现 521

16.3 对一个事务管理示例的探索 521

16.4 编程式事务管理 529

16.4.1 使用TransactionTemplate类 531

16.4.2 编程式事务管理小结 532

16.5 声明性事务管理 532

16.5.1 使用TransactionProxy-FactoryBean 532

16.5.2 在事务管理中使用代理的含义 534

16.6 AOP事务管理 535

16.6.1 使用基于注解的AOP事务管理 535

16.6.2 使用XML AOP事务管理 537

16.6.3 tx:advice标签简介 538

16.6.4 XML AOP小结 539

16.7 在多个事务性资源上使用事务 540

16.8 实现你自己的事务同步 541

16.9 小结 548

第17章 基于Spring MVC的Web应用开发 549

17.1 MVC架构 549

17.2 Spring MVC介绍 550

17.3 使用处理器映射 551

17.4 Spring控制器 553

17.4.1 AbstractController类 554

17.4.2 ParameterizableView-Controller类 555

17.4.3 MultiActionController类 555

17.5 拦截器 558

17.6 视图、本地化和主题 559

17.6.1 以编程的方式使用视图 559

17.6.2 使用视图解析器 561

17.6.3 使用本地化消息 565

17.6.4 使用Locale 565

17.6.5 使用主题 565

17.7 命令控制器 567

17.7.1 使用表单控制器 568

17.7.2 探索AbstractWizardForm-Controller类 574

17.7.3 文件上传 578

17.8 处理异常 581

17.9 Spring与其他Web技术 583

17.9.1 使用JSP 583

17.9.2 使用Velocity 600

17.9.3 FreeMarker 604

17.9.4 使用XSLT视图 608

17.9.5 使用PDF视图 609

17.9.6 实现PDF视图 610

17.9.7 使用Excel视图 611

17.9.8 使用Tiles 613

17.9.9 JasperReports报表引擎 623

17.10 Spring的约定优于配置 627

17.10.1 控制器约定 628

17.10.2 MultiActionController约定 628

17.10.3 模型约定 629

17.10.4 视图约定 630

17.11 使用注解配置控制器 631

17.11.1 @Controller注解 631

17.11.2 @RequestMapping注解 632

17.11.3 @RequestParam注解 633

17.11.4 @ModelAttribute注解 633

17.11.5 使用注解配置命令控制器 634

17.12 小结 635

第18章 Spring Web Flow 636

18.1 Spring Web Flow简介 637

18.1.1 核心概念 637

18.1.2 获取Spring Web Flow 640

18.1.3 Spring Web Flow依赖 642

18.2 Hello,Web Flow! 642

18.3 探索状态 646

18.3.1 view状态 647

18.3.2 decision状态 647

18.3.3 end状态 648

18.4 处理转换 648

18.5 高级概念 650

18.5.1 表达式语言和范围 650

18.5.2 实现action 653

18.5.3 模型数据绑定 654

18.5.4 局部视图刷新 658

18.5.5 映射流的输入与输出参数 658

18.5.6 使用子流 659

18.6 幕后的Spring Web Flow 660

18.6.1 流执行架构 660

18.6.2 流执行者 662

18.6.3 流定义注册表 662

18.6.4 流执行仓库 665

18.7 集成Spring MVC 666

18.7.1 流处理 666

18.7.2 视图解析 667

18.8 使用Spring Security构建安全的流 668

18.8.1 第一步:添加SecurityFlow-ExecutionListener 668

18.8.2 第二步:处理基本的认证和授权 668

18.8.3 第三步:在流定义中定义安全规则 670

18.9 问题解决 672

18.9.1 带状态的导航控制 672

18.9.2 浏览器导航栏支持和双提交(double submit) 672

18.10 测试流定义 673

18.11 小结 674

第19章 Spring与AJAX 675

19.1 DWR 675

19.2 安装DWR 676

19.3 针对DWR的Spring配置 676

19.4 关于完整示例 677

19.5 测试DWR配置 682

19.6 运行完整示例 682

19.7 DWR脚本基础 683

19.7.1 使用简单的回调函数 683

19.7.2 调用元数据对象 684

19.8 engine.js文件 684

19.8.1 调用批处理 684

19.8.2 调用顺序 684

19.8.3 错误和警告处理 684

19.9 util.js脚本 685

19.10 DWR的安全性 685

19.11 DWR的优缺点 686

19.12 小结 687

第20章 使用Spring JMX 688

20.1 JMX进阶 688

20.2 开放Java Bean 689

20.2.1 MBeanExporter类 689

20.2.2 MBeanServer FactoryBean类 691

20.2.3 在已有的MBean服务器上开放Bean 692

20.2.4 Bean注册行为 692

20.3 控制对象名 693

20.4 控制管理接口 693

20.4.1 MBeanInfoAssembler接口 693

20.4.2 MethodNameBasedMBean-InfoAssembler接口 694

20.4.3 用Java接口来控制管理接口 696

20.4.4 使用源码级元数据 698

20.5 远程使用Spring JMX 701

20.5.1 开放远程MBean 701

20.5.2 访问远程MBean 702

20.5.3 代理MBean 702

20.6 Spring JMX通知 703

20.6.1 通知监听器 703

20.6.2 发布通知 704

20.7 小结 708

第21章 使用Spring进行测试 709

21.1 进行单元测试 709

21.2 单元测试 711

21.3 集成测试 715

21.3.1 使用AbstractSpring-ContextTests 722

21.3.2 使用AbstractDependency-InjectionSpringContext-Tests类 723

21.3.3 使用AbstractTransactionalSpringContextTest 726

21.3.4 使用AbstractAnnotation-AwareTransactionalTest 728

21.3.5 JNDI 731

21.4 Spring TestContext Framework 733

21.4.1 应用上下文及使用TestContext Framework进行依赖注入 733

21.4.2 使用TestContext Framework进行依赖注入 735

21.4.3 TestContext Framework中的事务 736

21.4.4 支持类 738

21.5 测试覆盖 740

21.6 小结 740

第22章 Spring性能调优 741

22.1 性能与响应 741

22.2 探索企业应用的性能问题 741

22.3 测量Java EE应用的性能 742

22.3.1 测量目标 742

22.3.2 确定必要的数据集 747

22.3.3 改善数据访问层 748

22.3.4 提高事务管理 757

22.3.5 控制远程调用的性能 758

22.3.6 了解视图性能 758

22.4 使用缓存 759

22.5 性能测试 760

22.6 监控应用程序的状态和性能 762

22.7 更多的性能调优资源 764

22.8 小结 764