没有教程似的训导,更多的是说故事般的娓娓道来,本书是作者在多年的工作中积累的第一手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.”
......(更多)