好书推荐 好书速递 排行榜 读书文摘

Spring揭秘

Spring揭秘
作者:王福强
出版社:人民邮电出版社
出版年:2009-08
ISBN:9787115209429
行业:其它
浏览数:19

内容简介

没有教程似的训导,更多的是说故事般的娓娓道来,本书是作者在多年的工作中积累的第一手Spring框架使用经验的总结,深入剖析了Spring框架各个模块的功能、出现的背景、设计理念和设计原理,揭开了Spring框架的神秘面纱,使你“知其然,更知其所以然”。每部分的扩展篇帮助读者活学活用Spring框架的方方面面,同时可以触类旁通,衍生出新的思路和解决方案。

本书内容全面,论述深刻入理,必将成为每个Java专业开发人员必备的Spring图书。

......(更多)

作者简介

王福强,资深软件开发专家和系统架构师,原任花旗软件(大连)资深软件工程师,现任阿里巴巴B2B平台技术部架构师。多年来一直专注于Java平台的技术发展,以及一线产品的技术选型和框架设计。拥有多年金融行业软件开发经历,负责过信贷、外汇交易、固定收益等金融系统的分析、设计、开发、维护、集成、扩展和性能调优等,对各种大型金融机构体系的技术架构和实现有丰富经验和独到的见解。作为国内最早使用Spring的开发者之一,他对Spring的使用、设计和实现原理有着非常深入的了解。在本书中,他与读者分享了多年的Spring开发经验和探索企业级解决方案的心得。

......(更多)

目录

第一部分 掀起Spring的盖头来

第1章 Spring框架的由来 2

1.1 Spring之崛起 2

1.2 Spring框架概述 3

1.3 Spring大观园 5

1.4 小结 8

第二部分 Spring的IoC容器

第2章 IoC的基本概念 10

2.1 我们的理念是:让别人为你服务 10

2.2 手语,呼喊,还是心有灵犀 13

2.2.1 构造方法注入 13

2.2.2 setter方法注入 13

2.2.3 接口注入 14

2.2.4 三种注入方式的比较 15

2.3 IoC的附加值 15

2.4 小结 17

第3章 掌管大局的IoC Service Provider 18

3.1 IoC Service Provider的职责 18

3.2 运筹帷幄的秘密——IoC Service Provider如何管理对象间的依赖关系 19

3.2.1 直接编码方式 19

3.2.2 配置文件方式 20

3.2.3 元数据方式 21

3.3 小结 21

第4章 Spring的IoC容器之BeanFactory 22

4.1 拥有BeanFactory之后的生活 24

4.2 BeanFactory的对象注册与依赖绑定方式 26

4.2.1 直接编码方式 26

4.2.2 外部配置文件方式 28

4.2.3 注解方式 31

4.3 BeanFactory的XML之旅 33

4.3.1 beans和bean 33

4.3.2 孤孤单单一个人 35

4.3.3 Help Me, Help You 36

4.3.4 继承?我也会! 50

4.3.5 bean的scope 51

4.3.6 工厂方法与FactoryBean 56

4.3.7 偷梁换柱之术 61

4.4 容器背后的秘密 66

4.4.1 “战略性观望” 66

4.4.2 插手“容器的启动” 67

4.4.3 了解bean的一生 74

4.5 小结 85

第5章 Spring IoC容器ApplicationContext 86

5.1 统一资源加载策略 86

5.1.1 Spring中的Resource 87

5.1.2 ResourceLoader,“更广义的URL” 88

5.1.3 ApplicationContext与ResourceLoader 91

5.2 国际化信息支持(I18n MessageSource) 97

5.2.1 Java SE提供的国际化支持 97

5.2.2 MessageSource与ApplicationContext 98

5.3 容器内部事件发布 102

5.3.1 自定义事件发布 102

5.3.2 Spring的容器内事件发布类结构分析 105

5.3.3 Spring容器内事件发布的应用 107

5.4 多配置模块加载的简化 109

5.5 小结 110

第6章 Spring IoC容器之扩展篇 111

6.1 Spring 2.5的基于注解的依赖注入 111

6.1.1 注解版的自动绑定(@Autowired) 111

6.1.2 @Autowired之外的选择——使用JSR250标注依赖注入关系 115

6.1.3 将革命进行得更彻底一些(class-path-scanning功能介绍) 116

6.2 Spring 3.0展望 119

6.3 小结 120

第三部分 Spring AOP框架

第7章 一起来看AOP 122

7.1 AOP的尴尬 124

7.2 AOP走向现实 125

7.2.1 静态AOP时代 125

7.2.2 动态AOP时代 126

7.3 Java平台上的AOP实现机制 126

7.3.1 动态代理 126

7.3.2 动态字节码增强 126

7.3.3 Java代码生成 127

7.3.4 自定义类加载器 127

7.3.5 AOL扩展 127

7.4 AOP国家的公民 128

7.4.1 Joinpoint 128

7.4.2 Pointcut 130

7.4.3 Advice 131

7.4.4 Aspect 133

7.4.5 织入和织入器 133

7.4.6 目标对象 133

7.5 小结 134

第8章 Spring AOP概述及其实现机制 135

8.1 Spring AOP概述 135

8.2 Spring AOP的实现机制 136

8.2.1 设计模式之代理模式 136

8.2.2 动态代理 139

8.2.3 动态字节码生成 141

8.3 小结 142

第9章 Spring AOP一世 143

9.1 Spring AOP中的Joinpoint 143

9.2 Spring AOP中的Pointcut 144

9.2.1 常见的Pointcut 146

9.2.2 扩展Pointcut(Customize Pointcut) 151

9.2.3 IoC容器中的Pointcut 152

9.3 Spring AOP中的Advice 153

9.3.1 per-class类型的Advice 153

9.3.2 per-instance类型的Advice 159

9.4 Spring AOP中的Aspect 163

9.4.1 PointcutAdvisor家族 164

9.4.2 IntroductionAdvisor分支 167

9.4.3 Ordered的作用 168

9.5 Spring AOP的织入 170

9.5.1 如何与ProxyFactory打交道 170

9.5.2 看清ProxyFactory的本质 175

9.5.3 容器中的织入器——ProxyFactoryBean 179

9.5.4 加快织入的自动化进程 185

9.6 TargetSource 190

9.6.1 可用的TargetSource实现类 191

9.6.2 自定义TargetSource 195

9.7 小结 197

第10章 Spring AOP二世 198

10.1 @AspectJ形式的Spring AOP 198

10.1.1 @AspectJ形式AOP使用之先睹为快 199

10.1.2 @AspectJ形式的Pointcut 201

10.1.3 @AspectJ形式的Advice 211

10.1.4 @AspectJ中的Aspect更多话题 220

10.2 基于Schema的AOP 223

10.2.1 基于Schema的AOP配置概览 223

10.2.2 向基于Schema的AOP迁移 225

10.2.3 @AspectJ到“基于Schema的AOP”迁移 227

10.3 小结 235

第11章 AOP应用案例 237

11.1 异常处理 237

11.1.1 Java异常处理 237

11.1.2 Fault Barrier 238

11.2 安全检查 239

11.3 缓存 240

11.4 小结 240

第12章 Spring AOP之扩展篇 241

12.1 有关公开当前调用的代理对象的探讨 241

12.1.1 问题的现象 241

12.1.2 原因的分析 242

12.1.3 解决方案 243

12.2 小结 245

第四部分 使用Spring访问数据

第13章 统一的数据访问异常层次体系 249

13.1 DAO模式的背景 249

13.2 梦想照进现实 251

13.3 发现问题,解决问题 252

13.4 不重新发明轮子 254

13.5 小结 257

第14章 JDBC API的最佳实践 258

14.1 基于Template的JDBC使用方式 258

14.1.1 JDBC的尴尬 258

14.1.2 JdbcTemplate的诞生 261

14.1.3 JdbcTemplate和它的兄弟们 274

14.1.4 Spring中的DataSource 296

14.1.5 JdbcDaoSupport 301

14.2 基于操作对象的JDBC使用方式 302

14.2.1 基于操作对象的查询 303

14.2.2 基于操作对象的更新 310

14.2.3 基于操作对象的存储过程调用 313

14.3 小结 316

第15章 Spring对各种ORM的集成 317

15.1 Spring对Hibernate的集成 318

15.1.1 旧日“冬眠”时光 318

15.1.2 “春天”里的“冬眠” 321

15.2 Spring对iBATIS的集成 329

15.2.1 iBATIS实践之“前生”篇 329

15.2.2 iBATIS实践之“今世”篇 331

15.3 Spring中对其他ORM方案的集成概述 337

15.3.1 Spring对JDO的集成 337

15.3.2 Spring对TopLink的集成 340

15.3.3 Spring对JPA的集成 341

15.4 小结 344

第16章 Spring数据访问之扩展篇 345

16.1 活用模板方法模式及Callback 345

16.1.1 FTPClientTemplate 345

16.1.2 HttpClientTemplate 349

16.2 数据访问中的多数据源 350

16.2.1 “主权独立”的多数据源 350

16.2.2 “合纵连横”的多数据源 352

16.2.3 结束语 354

16.3 Spring 3.0展望 356

16.4 小结 356

第五部分 事务管理

第17章 有关事务的楔子 358

17.1 认识事务本身 358

17.2 初识事务家族成员 360

17.3 小结 362

第18章 群雄逐鹿下的Java事务管理 363

18.1 Java平台的局部事务支持 363

18.2 Java平台的分布式事务支持 365

18.2.1 基于JTA的分布式事务管理 366

18.2.2 基于JCA的分布式事务管理 367

18.3 继续前行之前的反思 367

18.4 小结 369

第19章 Spring事务王国的架构 370

19.1 统一中原的过程 371

19.2 和平年代 376

19.2.1 TransactionDefinition 376

19.2.2 TransactionStatus 382

19.2.3 PlatformTransac-tionManager 382

19.3 小结 392

第20章 使用Spring进行事务管理 393

20.1 编程式事务管理 393

20.1.1 直接使用PlatformTran-sactionManager进行编程式事务管理 393

20.1.2 使用TransactionTemp-late进行编程式事务管理 394

20.1.3 编程创建基于Savepoint的嵌套事务 396

20.2 声明式事务管理 397

20.2.1 引子 397

20.2.2 XML元数据驱动的声明式事务 399

20.2.3 注解元数据驱动的声明式事务 410

20.3 小结 413

第21章 Spring事务管理之扩展篇 414

21.1 理解并活用ThreadLocal 414

21.1.1 理解ThreadLocal的存在背景 414

21.1.2 理解ThreadLocal的实现 415

21.1.3 ThreadLocal的应用场景 416

21.1.4 使用ThreadLocal管理多数据源切换的条件 417

21.2 谈Strategy模式在开发过程中的应用 420

21.3 Spring与JTA背后的奥秘 423

21.4 小结 427

第六部分 Spring的Web MVC框架

第22章 迈向Spring MVC的旅程 430

22.1 Servlet独行天下的时代 430

22.2 繁盛一时的JSP时代 433

22.3 Servlet与JSP的联盟 436

22.4 数英雄人物,还看今朝 438

22.5 小结 440

第23章 Spring MVC初体验 441

23.1 鸟瞰Spring MVC 442

23.2 实践出真知 446

23.2.1 Spring MVC应用的物理结构 447

23.2.2 按部就班地开始工作 451

23.3 小结 459

第24章 近距离接触Spring MVC主要角色 460

24.1 忙碌的协调人HandlerMapping 460

24.1.1 可用的HandlerMapping 461

24.1.2 HandlerMapping执行序列(Chain Of HandlerMapping) 463

24.2 我们的亲密伙伴Controller 464

24.2.1 AbstractController 465

24.2.2 MultiActionController 468

24.2.3 SimpleFormController 476

24.2.4 AbstractWizard-FormController 496

24.2.5 其他可用的Controller实现 503

24.3 ModelAndView 505

24.3.1 ModelAndView中的视图信息 505

24.3.2 ModelAndView中的模型数据 506

24.4 视图定位器ViewResolver 506

24.4.1 可用的ViewResolver实现类 507

24.4.2 ViewResolver查找序列(Chain Of ViewResolver) 511

24.5 各司其职的View 511

24.5.1 View实现原理回顾 512

24.5.2 可用的View实现类 515

24.5.3 自定义View实现 521

24.6 小结 523

第25章 认识更多Spring MVC家族成员 524

25.1 文件上传与MultipartResolver 525

25.1.1 使用MultipartResolver进行文件上传的简单分析 526

25.1.2 文件上传实践 527

25.2 Handler与HandlerAdaptor 530

25.2.1 问题的起源 530

25.2.2 深入了解Handler 531

25.2.3 近看HandlerAdaptor的奥秘 533

25.2.4 告知Handler与Handler-Adaptor的存在 535

25.3 框架内处理流程拦截与Handler-Interceptor 536

25.3.1 可用的Handler-Interceptor实现 537

25.3.2 自定义实现Handler-Interceptor 538

25.3.3 HandlerInterceptor寻根 540

25.3.4 HandlerInterceptor之外的选择 541

25.4 框架内的异常处理与Handler-ExceptionResolver 544

25.5 国际化视图与LocalResolver 548

25.5.1 可用的LocaleResolver 549

25.5.2 LocaleResolver的足迹 550

25.5.3 Locale的变更与LocaleChangeHandler 551

25.6 主题(Theme)与ThemeResolver 552

25.6.1 提供主题资源的ThemeSource 552

25.6.2 管理主题的ThemeResolver 554

25.6.3 切换主题的ThemeChange-Interceptor 555

25.7 小结 556

第26章 Spring MVC中基于注解的Controller 557

26.1 初识基于注解的Controller 557

26.2 基于注解的Controller原型分析 558

26.2.1 自定义用于基于注解的Contro-ller的HandlerMapping 558

26.2.2 自定义用于基于注解的Contro-ller的HandlerAdaptor 560

26.3 近看基于注解的Controller 563

26.3.1 声明基于注解的Controller 563

26.3.2 请求参数到方法参数的绑定 569

26.3.3 使用@ModelAttribute访问模型数据 572

26.3.4 通过@SessionAttribute管理Session数据 574

26.4 小结 576

第27章 Spring MVC之扩展篇 577

27.1 Spring MVC也Convention Over Configuration 577

27.1.1 Convention Over Configuration简介 577

27.1.2 Spring MVC中的Convention Over Configuration 578

27.2 Spring 3.0展望 581

27.3 小结 582

第七部分 Spring框架对J2EE服务的集成和支持

第28章 Spring框架内的JNDI支持 584

28.1 JNDI简单回顾 584

28.2 Spring框架内JNDI访问的基石——JndiTemplate 585

28.3 JNDI对象的依赖注入——JndiObjectFactoryBean 587

28.4 小结 588

第29章 Spring框架对JMS的集成 589

29.1 说说JMS的身世 589

29.2 使用JMS API进行应用开发的传统套路 590

29.3 Spring改进后的JMS实战格斗术 592

29.3.1 消息发送和同步接收 592

29.3.2 异步消息接收 601

29.3.3 JMS相关异常处理 607

29.3.4 框架内的事务管理支持 608

29.4 小结 609

第30章 使用Spring发送E-mail 610

30.1 思甜前,先忆苦 610

30.2 Spring的E-mail抽象层分析 612

30.2.1 直接创建邮件消息并发送 614

30.2.2 使用MimeMessage-Preparator发送邮件 615

30.3 Spring的E-mail支持在实际开发中的应用 616

30.4 小结 622

第31章 Spring中的任务调度和线程池支持 623

31.1 Spring与Quartz 623

31.1.1 初识Quartz 623

31.1.2 融入Spring大家庭的Quartz 626

31.2 Spring对JDK Timer的集成 631

31.2.1 JDK Timer小记 631

31.2.2 Spring集成后的JDK Timer 632

31.3 Executor的孪生兄弟TaskExecutor 634

31.3.1 可用的TaskExecutor 635

31.3.2 TaskExecutor使用实例 637

31.4 小结 639

第32章 Spring框架对J2EE服务的集成之扩展篇 640

32.1 MailMonitor的延伸 640

32.2 Spring 3.0展望 642

32.3 小结 642

第33章 Spring远程方案 643

33.1 从“对面交谈”到“千里传声” 643

33.2 Spring Remoting架构分析 645

33.2.1 Spring Remoting之远程访问异常体系 645

33.2.2 统一风格的远程服务公开与访问方式 646

33.3 Spring Remoting提供的远程服务支持 648

33.3.1 基于RMI的Remoting方案 648

33.3.2 基于HTTP的轻量级Remoting方案 651

33.3.3 基于Web服务的远程方案 655

33.3.4 基于JMS的远程方案 658

33.4 扩展Spring Remoting 660

33.5 Spring Remoting之扩展篇 663

33.5.1 拉开JMX演出的序幕 663

33.5.2 Spring 3.0展望 664

参考文献 665

......(更多)

读书文摘

正像Donald J. Trump在How To Get Rich一书中所说的那样:“before the dream lifts you into the clouds, make sure look hard at the facts on the ground."

不过,正像Donald J. Trump在How To Get Rich一书中所说 的那样:“Before the dream lifts you into the clouds, make sure look hard at the facts on the ground.”

......(更多)

猜你喜欢

点击查看