Spring高级程序设计(Spring框架创始人倾情推荐的权威开发指南)
市场价 :¥99.00
会员价 : ¥74.25(75折)
样章免费试读:http://www.china-pub.com/195970
【作 者】(英)Jan Machacek;Aleksa Vukotic;Anirvan Chakraborty;Jessica Ditt
【译 者】 马连浩;栗磊;张龙;张俊[同译者作品]
【丛 书 名】 图灵程序设计丛书
【出 版 社】 人民邮电出版社 【书 号】 9787115212047
【上架时间】 2009-8-26
【出版日期】 2009 年9月 【开 本】 16开
【编辑推荐】
Spring框架创始人倾情推荐的权威开发指南.
全面揭示Spring框架关键技术..
深入了解Spring内部工作机制
【内容简介】
作为最强大、应用最广泛的企业级Java开发框架,Spring因其强大的适应性和可扩展性而适用于各种企业级系统。本书是由资深Spring开发专家编写,囊括了Spring开发人员需要了解的精炼要点和复杂主题。基于目前企业中应用最广泛的Spring 2.5版本,不但全面介绍了Spring开发框架的关键技术和模块,并且还介绍了AJAX、Web工作流、动态语言等主流技术。.
本书适合所有Java开发人员,特别是企业级Java开发人员阅读参考。是一本由Spring框架核心开发人员为读者奉献的权威开发指南,将带给你设计和构建高效、可扩展的Spring应用的丰富知识和经验。...
【目录信息】
第一部分 Spring入门
第1章 Spring简介2
1.1 Spring是什么2
1.1.1 依赖注入之外的特性4
1.1.2 使用Spring进行面向方面编程4
1.1.3 数据访问5
1.1.4 简化与整合Java EE5
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 Flow7
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 .NET8
1.2.3 Spring IDE9
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上签出Spring11
2.1.2 从源码构建Spring12
2.1.3 检查Spring发布包13
2.1.4 Spring发布包13
2.1.5 Spring依赖的包14
2.1.6 示例应用16
2.1.7 配置Spring和IDE18
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和BeanFactory34
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 直接访问FactoryBean94
4.6 BeanFactoryPostProcessor类94
4.7 JavaBean的属性修改器101
4.7.1 内建的PropertyEditor101
4.7.2 创建自定义PropertyEditor104
4.8 BeanPostProcessor类108
4.8.1 实现一个BeanPostProcessor110
4.8.2 使用BeanPostProcessor类的实机选择114
4.9 Spring ApplicationContext115
4.9.1 ApplicationContext的实现类115
4.9.2 使用ApplicationContext-
Aware116
4.9.3 控制bean的初始化117
4.9.4 使用基于注解的配置118
4.9.5 使用MessageSource进行
国际化123
4.9.6 在独立应用中使用
MessageSource130
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 静态AOP137
5.2.2 动态AOP137
5.2.3 选择一种AOP类型137
5.3 Spring中的AOP137
5.3.1 AOP联盟138
5.3.2 AOP的Hello World138
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 使用ComposablePointcut172
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中使用@Pointcuts194
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包含的schema238
7.2.1 beans schema238
7.2.2 上下文schema239
7.2.3 util schema239
7.2.4 tx schema242
7.2.5 aop schema242
7.2.6 jee schema242
7.2.7 lang schema243
7.3 schema背后244
7.4 自定义schema246
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
第二部分 数据访问
第9章 Spring对JDBC的支持286
9.1 JDBC的主要概念286
9.1.1 使用DriverManager和
Connection288
9.1.2 使用PreparedStatement289
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 JDBC326
9.8.1 SimpleJdbcTemplate类326
9.8.2 SimpleJdbcCall类329
9.8.3 SimpleJdbcInsert类331
9.8.4 SimpleJdbcDaoSupport类332
9.9 小结333
第10章 集成iBATIS334
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和Spring339
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 Session363
11.3.2 使用HibernateDaoSupport类366
11.3.3 HibernateTemplate和Session
间的选择368
11.4 在企业级应用程序中使用
Hibernate372
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
第三部分 企业级应用组件
第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 BeanShell459
14.1.2 Groovy461
14.1.3 JRuby462
14.2 使用动态语言定义Spring bean463
14.2.1 动态语言支持的幕后465
14.2.2 代理动态语言bean466
14.2.3 性能466
14.3 可刷新bean(refreshable bean)468
14.4 基于BeanShell的bean470
14.5 基于JRuby的bean472
14.6 基于Groovy的bean473
14.7 动态语言在Spring程序中的典型
应用473
14.8 小结477
第四部分 Java EE 5应用开发
第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-
FactoryBean532
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 使用Locale565
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 使用JSP583
17.9.2 使用Velocity600
17.9.3 FreeMarker604
17.9.4 使用XSLT视图608
17.9.5 使用PDF视图609
17.9.6 实现PDF视图610
17.9.7 使用Excel视图611
17.9.8 使用Tiles613
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 Flow636
18.1 Spring Web Flow简介637
18.1.1 核心概念637
18.1.2 获取Spring Web Flow640
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 实现action653
18.5.3 模型数据绑定654
18.5.4 局部视图刷新658
18.5.5 映射流的输入与输出参数658
18.5.6 使用子流659
18.6 幕后的Spring Web Flow660
18.6.1 流执行架构660
18.6.2 流执行者662
18.6.3 流定义注册表662
18.6.4 流执行仓库665
18.7 集成Spring MVC666
18.7.1 流处理666
18.7.2 视图解析667
18.8 使用Spring Security构建安全的流668
18.8.1 第一步:添加SecurityFlow-
ExecutionListener668
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与AJAX675
19.1 DWR675
19.2 安装DWR676
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 JMX688
20.1 JMX进阶688
20.2 开放Java Bean689
20.2.1 MBeanExporter类689
20.2.2 MBeanServer FactoryBean类691
20.2.3 在已有的MBean服务器上开放Bean692
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 JMX701
20.5.1 开放远程MBean701
20.5.2 访问远程MBean702
20.5.3 代理MBean702
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-
ContextTests722
21.3.2 使用AbstractDependency-
InjectionSpringContext-
Tests类723
21.3.3 使用AbstractTransac-
tionalSpringContextTest726
21.3.4 使用AbstractAnnotation-
AwareTransactionalTest728
21.3.5 JNDI731
21.4 Spring TestContext Framework733
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