Spring框架是主要的开源应用程序开发框架,它使得Java/J2EE开发更容易、效率更高。本书不仅向读者展示了Spring能做什么?而且揭示了Spring完成这些功能的原理,解释其功能和动机,以帮助读者使用该框架的所有部分来开发成功的应用程序。本书涵盖Spring的所有特性,并且演示了如何将其构成一个连贯的整体,帮助读者理解Spring方法的基本原理、何时使用Sping以及如何效仿最佳实践。所有这些都以完整的样本应用程序来举例说明。读完本书,读者将能够有效地在各种应用中(从简单的web应用程序到复杂的企业级应用程序)使用Spring。
本书旨在指导读者何使用Spring框架来实现各种有效应用程序的开发(从简单的Web应用到复杂的企业级应用)。通过一个完整的样本应用程序贯穿全书,举例说明Spring如何提供一个清晰的、分层的体系结构的基础;以及如何适当地使用Spring来实现好的OO设计和体系结构设计,以及如何应用最佳实践。
本书面向欲深人学习Spring框架的Java/J2EE体系结构设计人员和开发人员,使他们能够把spring框架有效地用于从简单的Web应用到复杂的企业级应用;也非常适合Spring框架新手作为常备参考书。
第1章 Spring框架概述 1
1.1 为什么要Spring? 1
1.1.1 J2EE传统方式的问题 1
1.1.2 轻量级框架 3
1.1.3 进入Spring 4
1.2 Spring的价值 5
1.3 上下文中的Spring 6
1.3.1 技术 7
1.3.2 面向方面的编程 9
1.3.3 一致性抽象 12
1.3.4 与其他框架的关系 16
1.4 使用Spring构造应用程序 18
1.4.1 关系图 18
1.4.2 持久性和集成 20
1.4.3 业务服务对象 23
1.4.4 表示 24
1.5 前景 25
1.5.1 发布日程 25
1.5.2 Java和J2EE的进展 26
1.5.3 技术趋势 27
1.5.4 标准与源码公开 27
1.6 Spring项目和社区 28
1.6.1 历史 28
1.6.2 模块摘要 29
1.6.3 支持的环境 32
1.7 小结 32
第2章 BEAN工厂与应用程序上下文 34
2.1 控制反转和依赖注入 34
2.1.1 不同形式的依赖注入 36
2.1.2 在设置器注入和构造函数注入之间决定 37
2.2 容器 38
2.2.1 Bean工厂 39
2.2.2 应用程序上下文 40
2.2.3 启动容器 41
2.2.4 使用来自工厂的Bean 42
2.2.5 XML Bean配置 43
2.2.6 基本的Bean定义 43
2.2.7 管理Bean生命周期 52
2.2.8 对服务和资源访问的抽象 54
2.2.9 重用Bean定义 57
2.2.10 使用后置处理器处理定制的Bean和容器 59
2.3 小结 63
第3章 高级容器概念 64
3.1 低层资源的抽象 64
3.1.1 应用程序上下文作为ResourceLoader 64
3.1.2 应用程序上下文作为消息源 66
3.2 应用程序事件 68
3.3 管理容器 69
3.3.1 ApplicationContext构造函数中的资源位置路径 69
3.3.2 应用程序上下文的声明性用法 71
3.3.3 将容器定义划分到多个文件 72
3.3.4 处理组件的策略 73
3.3.5 用于访问容器的单态 75
3.4 一些方便的工厂BEAN 75
3.4.1 PropertyPathFactoryBean 76
3.4.2 FieldRetrievingFactoryBean 76
3.4.3 MethodInvokingFactoryBean 77
3.5 SPRING提供的属性编辑器 77
3.6 测试策略 78
3.6.1 单元测试 78
3.6.2 使用Spring容器的测试 80
3.7 XML的替代品 81
3.7.1 来自Properties文件的定义 82
3.7.2 编程化的Bean定义 82
3.7.3 其他格式 83
3.7.4 参考文献 83
3.8 小结 83
第4章 SPRING与AOP 84
4.1 目标 84
4.2 假设 85
4.3 例子 85
4.4 SPRING的AOP框架 86
4.4.1 拦截器链 87
4.4.2 赞成与反对 87
4.4.3 通知 88
4.4.4 切点 92
4.4.5 通知器(Advisor) 96
4.4.6 与Spring IoC容器的集成 97
4.4.7 在运行时间检验并处理代理状态 107
4.4.8 编程化的代理创建 107
4.5 使用SPRING的AOP框架的高级特性 108
4.5.1 TargetSources 108
4.5.2 及早终止拦截器链 112
4.5.3 使用介绍 112
4.5.4 暴露当前的代理 114
4.5.5 暴露当前的MethodInvocation 115
4.5.6 理解代理类型 115
4.5.7 调试与测试 117
4.5.8 其他 118
4.6 与其他AOP框架集成 120
4.6.1 目标 120
4.6.2 AspectJ集成 121
4.6.3 AspectWerkz 125
4.7 参考文献 125
4.8 小结 126
第5章 DAO支持与JDBC框架 127
5.1 数据访问对象模式 127
5.2 SPRING的JDBC框架概述 128
5.2.1 起因:直接使用JDBC的问题 128
5.2.2 Spring可以如何帮助 130
5.2.3 简单的例子 130
5.3 建立样本应用程序的数据访问层 131
5.3.1 样本应用程序的数据模型 131
5.3.2 DataSource 132
5.3.3 异常转译 133
5.4 使用JDBCTEMPLATE的操作 134
5.4.1 回调方法的使用 134
5.4.2 JdbcTemplate的方便方法 135
5.4.3 使用JdbcTemplate的基本查询 136
5.4.4 使用JdbcTemplate的基本更新 137
5.4.5 JdbcTemplate的高级用法 137
5.4.6 对RowSet的支持 138
5.5 使用RDBMS操作类 139
5.5.1 SqlQuery和MappingSqlQuery 139
5.5.2 使用SqlUpdate插入和更新 140
5.5.3 使用UpdatableSqlQuery更新ResultSet 141
5.5.4 生成主键 141
5.5.5 检索数据库生成的键 142
5.5.6 调用存储过程 143
5.6 高级概念 144
5.6.1 在应用程序服务器中的运行Spring JDBC 144
5.6.2 使用定制的异常转译 145
5.6.3 读写LOB数据 147
5.6.4 批量更新 149
5.6.5 存储过程的高级用法 150
5.7 其他的考虑事项 152
5.7.1 性能 152
5.7.2 何时使用JDBC和O/R映射 152
5.7.3 JDBC版本和J2EE版本 153
5.8 小结 153
第6章 事务和资源管理 154
6.1 背景 154
6.1.1 什么是事务? 154
6.1.2 ACID属性 154
6.1.3 并发控制 156
6.2 事务与J2EE 156
6.2.1 局部事务 157
6.2.2 全局/分布式事务 157
6.2.3 事务传播 157
6.2.4 事务划分 157
6.3 SPRING事务支持的例子 158
6.4 SPRING的事务抽象介绍 159
6.4.1 事务控制选择的概述 159
6.4.2 事务划分策略 162
6.4.3 事务管理策略 167
6.5 DATASOURCE声明 171
6.5.1 本地非缓冲 171
6.5.2 本地缓冲 172
6.5.3 JNDI 172
6.5.4 在本地DataSource和JNDI DataSource之间选择 173
6.6 小结 173
第7章 对象/关系映射 175
7.1 背景知识 175
7.1.1 基本的O/R映射 176
7.1.2 对象查询语言 176
7.1.3 透明持久性 177
7.1.4 何时选择O/R映射 177
7.2 SPRING中的O/R映射支持 178
7.2.1 数据访问对象 178
7.2.2 事务管理 179
7.3 IBATIS SQL MAPS 179
7.3.1 映射文件 180
7.3.2 DAO实现 181
7.3.3 在Spring上下文中设置 182
7.3.4 事务管理 182
7.3.5 iBATIS概要 183
7.4 HIBERNATE 184
7.4.1 映射文件 184
7.4.2 DAO实现 185
7.4.3 Spring上下文中的设置 186
7.4.4 设置为JCA连接器 187
7.4.5 事务管理 188
7.4.6 Open Session in View 192
7.4.7 BLOB/CLOB处理 194
7.4.8 Hibernate:小结 195
7.5 JDO 196
7.5.1 持久性对象的生命周期 197
7.5.2 DAO实现 197
7.5.3 在Spring上下文中设置 199
7.5.4 事务管理 200
7.5.5 PersistenceManager的生命周期 200
7.5.6 Open PersistenceManager in View 201
7.5.7 JDO方言 203
7.5.8 JDO:小结 203
7.6 其他O/R映射工具 205
7.6.1 Apache OJB 205
7.6.2 TopLink 206
7.6.3 Cayenne 207
7.6.4 JSR-220持久性 207
7.7 小结 207
第8章 轻量级远程处理 209
8.1 概念和范围 209
8.2 公共的配置风格 211
8.3 HESSIAN和BURLAP 212
8.3.1 访问一个服务 213
8.3.2 导出一个服务 214
8.4 HTTP调用器 215
8.4.1 访问一个服务 216
8.4.2 导出一个服务 216
8.4.3 定制化选项 217
8.5 RMI 218
8.5.1 访问一个服务 219
8.5.2 Stub查询策略 220
8.5.3 导出一个服务 221
8.5.4 定制化选项 222
8.5.5 RMI-IIOP 222
8.6 通过JAX-RPC的WEB服务 223
8.6.1 访问一个服务 224
8.6.2 导出一个服务 225
8.6.3 定制的类型映射 226
8.7 小结 227
第9章 支持性服务 229
9.1 JMS 229
9.1.1 引言 229
9.1.2 Spring的JMS支持的起因 230
9.1.3 通过模板的JMS访问 230
9.1.4 异常处理 232
9.1.5 ConnectionFactory管理 232
9.1.6 消息转换器 233
9.1.7 目的管理 233
9.1.8 事务管理 234
9.1.9 JmsGatewaySupport 235
9.1.10 前景 236
9.2 使用SPRING的调度 236
9.2.1 Timer与Quartz 236
9.2.2 Timer 237
9.2.3 Quartz 238
9.3 使用SPRING发送电子邮件 241
9.3.1 入门指南 242
9.3.2 重用现有的邮件会话 242
9.3.3 使用COS的邮寄发送 242
9.3.4 通用的邮件管理器 243
9.4 脚本 245
9.4.1 一致性模型 245
9.4.2 其他脚本语言 248
9.5 小结 248
第10章 SPRING的ACEGI SECURITY系统 249
10.1 企业应用程序的安全选择 249
10.1.1 典型的需求 249
10.1.2 Acegi Security简介 250
10.1.3 Java身份验证和授权服务 252
10.1.4 Servlet规范 254
10.2 ACEGI SECURITY的基础 255
10.2.1 身份验证 255
10.2.2 存储身份验证对象 257
10.2.3 授权 258
10.2.4 域对象实例的安全 259
10.3 范例代码 262
10.3.1 范例介绍 262
10.3.2 安全不知道的实现 262
10.3.3 安全方法 263
10.3.4 身份验证 263
10.3.5 授权 264
10.4 小结 265
第11章 SPRING与EJB 267
11.1 对EJB的需要做出决断 267
11.2 访问EJB 268
11.2.1 样板方法 268
11.2.2 Spring的方法 269
11.3 用SPRING实现EJB 273
11.3.1 无状态会话Bean 273
11.3.2 有状态会话Bean 275
11.3.3 消息驱动的Bean 276
11.3.4 XDoclet 276
11.4 单态容器访问,好还是坏? 277
11.4.1 ContextSingletonBeanFactoryLocator和SingletonBeanFactoryLocator 278
11.4.2 共享的上下文作为Web应用程序的应用程序上下文的双亲 280
11.4.3 使用来自EJB的共享的上下文 280
11.5 测试关注点 281
11.5.1 在POJO委托中实现业务功能 281
11.5.2 使用模仿的EJB容器 282
11.5.3 应用程序服务器内部的集成测试 282
11.6 小结 283
第12章 WEB MVC框架 284
12.1 简单的例子 284
12.2 一般的体系结构 285
12.2.1 Web MVC概念 285
12.2.2 使用分发器和控制器的通用Web MVC 286
12.2.3 好的Web MVC框架的需求 286
12.2.4 Spring的Web MVC的等价物 287
12.3 基础设施组件 289
12.3.1 DispatcherServlet 289
12.3.2 WebApplicationContext 291
12.4 处理请求有关的工作流 293
12.5 SPRING MVC WEB应用程序的一般布局 294
12.6 HANDLERMAPPING 295
12.6.1 BeanNameUrlHandlerMapping 296
12.6.2 SimpleUrlHandlerMapping 296
12.6.3 CommonsPathMapUrlHandlerMapping 297
12.6.4 多个HandlerMapping 298
12.7 HANDLEREXECUTIONCHAIN和拦截器 298
12.7.1 WebContentInterceptor 299
12.7.2 UserRoleAuthorizationInterceptor 300
12.7.3 Spring MVC提供的其他处理器拦截器 300
12.8 处理器及其适配器 300
12.9 MODELANDVIEW和VIEWRESOLVERS 301
12.9.1 UrlBasedViewResolver 301
12.9.2 BeanNameViewResolver和XmlViewResolver 302
12.9.3 ResourceBundleViewResolver 302
12.9.4 视图解析器成链 303
12.10 地区值的改变和解析 304
12.11 HANDLEREXCEPTIONRESOLVERS 305
12.12 控制器 307
12.12.1 WebContentGenerator 307
12.12.2 AbstractController 308
12.12.3 UrlFilenameViewController 308
12.12.4 ParameterizableViewController 309
12.12.5 MultiActionController 309
12.13 数据绑定 310
12.13.1 使用数据绑定时的方便功能 310
12.14 使用控制器的实际例子 311
12.15 使用ABSTRACTCONTROLLER查看演出列表 311
12.15.1 预订 313
12.16 向导功能 318
12.16.1 基本配置 318
12.16.2 模板方法 318
12.16.3 向导流程 319
12.16.4 页面改变、编号和其他动作 319
12.17 扩展SPRING处理器的基础设施 320
12.18 上传文件 321
12.18.1 配置多部分解析器 321
12.18.2 创建表单来上传文件 321
12.18.3 处理上传的数据 322
12.19 测试控制器 322
12.19.1 无需应用程序上下文的测试 323
12.19.2 使用模仿对象的更广泛测试 323
12.19.3 使用完全的应用程序上下文测试 323
12.19.4 测试Web应用程序的其他方法 324
12.19.5 小结 324
第13章 WEB视图技术 326
13.1 一个例子 326
13.1.1 通用配置 327
13.1.2 JSP 327
13.1.3 FreeMarker 327
13.1.4 使用iText生成PDF 328
13.2 选择技术时的注意事项 328
13.3 视图对象和模型 329
13.4 ABSTRACTVIEW提供的特性 330
13.4.1 使用RedirectView发布新的请求 330
13.4.2 使用视图前缀发布转向或者重定向 331
13.5 JSP 332
13.5.1 配置应用程序以使用JSP 332
13.5.2 使用定制标记创建表单 333
13.5.3 使用标记文件创建可重用的元素 337
13.6 VELOCITY和FREEMARKER 338
13.6.1 配置视图解析器 338
13.6.2 使用表单简化宏 340
13.7 TILES 342
13.8 基于XML和XSLT的视图 344
13.9 EXCEL和基于其他文档的视图 345
13.9.1 从表演列表生成Excel文件 345
13.9.2 以模板作为Excel文件的基础 346
13.9.3 基于其他文档的视图 346
13.9.4 使用HandlerInterceptor区分HTML和Excel 346
13.10 实现定制视图 347
13.10.1 View和AbstractView 347
13.10.2 实现从数据对象生成XML的视图 348
13.10.3 实现定制视图时的注意事项 348
13.11 小结 349
第14章 与其他WEB框架集成 350
14.1 选择MVC框架时的注意事项 350
14.1.1 比较传统的Web MVC框架 350
14.2 与SPRING集成:核心概念 359
14.3 WEBWORK 集成 361
14.3.1 设置ObjectFactory 361
14.4 STRUTS集成 361
14.4.1 使用ActionSupport 362
14.4.2 使用DelegationRequestProcessor和DelegationActionProxy 362
14.4.3 使用自动装配的基本动作 364
14.5 TAPESTRY集成 365
14.5.1 为Tapestry准备Bean 365
14.5.2 页面类 365
14.5.3 页面定义 366
14.5.4 页面模板 366
14.5.5 Tapestry集成的最终思考 366
14.6 JSF集成 367
14.7 小结 368
第15章 样本应用程序 369
15.1 服务器技术的选择 369
15.2 应用层 370
15.3 持久性层 370
15.3.1 数据模型 370
15.3.2 域对象模型 371
15.3.3 对象/关系映射 371
15.3.4 DAO实现 373
15.3.5 数据访问上下文 374
15.4 业务服务层 374
15.4.1 服务 374
15.4.2 应用程序上下文 375
15.5 WEB层 375
15.5.1 应用程序流程 376
15.5.2 通过web.xml配置应用程序 376
15.5.3 Web控制器 377
15.5.4 视图技术 377
15.6 与J2EE设计和开发实现的比较 378
15.6.1 更简单的技术 378
15.6.2 数据库变化 378
15.7 服务器配置 378
15.7.1 MySQL 379
15.7.2 Tomcat 379
15.8 组建和部署 379
15.8.1 创建和载入数据库表 380
15.8.2 组建应用程序并部署到Tomcat服务器 380
15.9 小结 380
第16章 结论 381
16.1 SPRING解决的问题 381
16.2 SPRING解决方案 381
16.3 SPRING开发的指导方针 383
16.3.1 技术选择 383
16.3.2 层与层 385
16.3.3 构造应用程序 389
16.3.4 测试应用程序 392
16.4 相关项目 394
16.4.1 Spring的Acegi Security 394
16.5 其他项目 395
16.6 非J2EE环境中的SPRING 395
16.7 发现更多 396
16.7.1 书籍和文章 396
16.7.2 在线资源 397
16.7.3 样本应用程序 397
16.8 前景.. 398
附录A 样本应用程序的需求 399
A.1 概述 399
A.2 用户群体 399
A.2.1 公众Internet用户 399
A.2.2 售票处用户 400
A.2.3 系统管理员 400
A.3 假设 400
A.4 范围限制 401
A.5 交付时间表 401
A.6 INTERNET用户界面 401
A.6.1 基本工作流 402
A.6.2 错误处理 402
A.6.3 应用程序屏幕 402
A.7 非功能性需求 409
A.8 硬件和软件环境 410
电脑故障诊断与排除十日速成-含1DVD 本书特色 电脑入门九日速成电脑上网技巧十日速成 电脑组装与维护八日速成电脑应用技巧九日速成网上开店七日速成 常用工具...
本书出自第一线JAVA编程专家之手,为读者展现正确、高效、强固之JAVA代码实践方案。这本取材广泛的掼,以不同层级的专家经验,帮
汇编语言(第三版) 本书特色 汇编语言是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相关课程(如数据结构、...
本书是一部为广大从事声频工程工作的读者提供准确、全面、简明的专业知识的工具书。该书的第三版全面更新了原有的内容,这部新版
《不打骂、不宠溺、刚刚好的教养力》内容简介:本书通过平和教养与孩子联结,杜绝粗暴教育与过度养育,以情感引导帮助孩子发展自律
GPS导航原理与应用 本书特色 本书阐述了GPS导航及其应用的基本原理,全书共分为十章。前三章介绍了全球定位系统(GPS)的发展概况、系统的构成、导航定位的时空...
《Spring Boot技术实践》内容简介:SpringBoot在医疗健康领域的应用推动了设计模式在互联网领域的发展。本书SpringBoot带动了Java编
《云管理时代:解码中国管理模式⑤》内容简介:风起云涌,大浪淘沙,中国经济和全球商业环境的变化,正在对中国企业提出全新的挑战
《21天学通JavaWeb开发》是JavaWeb开发的基础教程,针对没有接触过或还不是特别熟悉JavaWeb开发的读者,详细介绍了JavaWeb开发的
IT服务连续性实现指南 本书特色 本书是一种系统地、全面地阐述it服务连续性知识体系的专著,旨在为社会培养it服务连续性领域的人才,为数据中心开展it服务连续性...
本书是有关软件需求的经典教材,本书全面而深入地讲述了软件开发中一个至关重要的问题——软件需求问题。软件开发人员及用户往往
《无价》内容简介:为什么百老汇剧场里价格越高的位置卖得越火?为什么100万美元带来的愉悦感,400万美元才能让它翻倍?为什么议价
《大道PHP:LAMP+Zend+开源框架整合开发与实战》以PHP应用程序开发为主题,对实践中必不可少的各项重要技术进行了全面介绍与系统
《最新英语专业考研》内容简介:中国是一个正在崛起的大国,这个崛起大国背后的推动力是什么?是占世界五分之一的人口?是悠久的历
PRO\engineer wildfire4.0手动分模及模具设计技术解析(附光盘) 本书特色 《Pro/Engineer Wildfire 4.0手动分模及模...
Photoshop平面设计基础 本书特色 《Photoshop平面设计基础》由王艳娟主编,本书作者根据多年的教学经验并结合学生的特点和需求,编写这本教材。本教材...
《商业美食摄影必修课》内容简介:本书结合作者多年美食摄影的工作经验,用大量的作品和实际案例,由浅及深地向读者描绘了一条美食
《OpenCV 4计算机视觉:Python语言实现(原书第3版)》内容简介:本书首先介绍OpenCV 4以及如何基于Python 3在各种平台上安装OpenC
《网站创富:从搭建、管理到营利》内容简介:本书聚焦于如何搭建、管理一个网站,并进行营利,主要内容有:网站空间的选购、部署和
《赢单九问:策略销售实战秘籍》内容简介:大客户销售通常涉及人员众多、局面扑朔迷离、竞争异常激烈,要想赢单并不容易,需要销售