书籍详情
Spring2.0宝典
作者:李刚
出版社:电子工业出版社
出版时间:2006-10-01
ISBN:9787121032349
定价:¥79.00
购买这本书可以去
内容简介
Spring是目前最流行的J2EE框架,在J2EE应用的各层都有其不俗的表现。Spring提倡的“实用主义”法则大大简化了J2EE的开发。本书由浅入深、全面地介绍了Spring的结构体系,内容覆盖到Spring近80%的API。全书分21章,内容涵盖了Spring的核心机制、依赖注入、资源访问、AOP框架、事务框架、整合Hibernate、DAO支持、JDBC支持、MVC框架、整合第三方表现层技术、整合第三方MVC框架、远程访问支持、EJB访问和实现、Spring对测试的简化、Spring对JMS和JavaMail的支持等。本书的示例都是笔者精心挑选,具有很强的针对性,力求让读者可以明白Spring每个方面的知识点。最后的两个综合案例,采用最科学的轻量级J2EE结构,涉及的框架有Spring,Struts,WebWork2,Hibernate,FreeMarker,Velocity等,知识面相当全面,具有很好的示范作用,务必让读者感受到高质量J2EE应用的魅力。本书适用于有较好的Java编程基础,有一定的J2EE编程基础的用户。本书既可以作为Spring的学习指南,也可作为实际开发人员的参考手册。
作者简介
李刚,从事过6年的J2EE应用开发,曾担任LITEON公司的J2EE技术主管,负责该公司的企业信息平台的架构设计。担任过广东龙泉科技有限公司的J2EE技术培训导师。目前在新东方IT培训中心担任J2EE培训讲师,培训的学生已经在广州、深圳等多家软件公司就业,在珠三角的J2EE行业极具号召力。
目录
第1部分 Spring核心技术 1
第1章 Spring概述 2
1.1 Spring的起源和背景 2
1.2 Spring初探 3
1.2.1 运行Spring所需的环境 3
1.2.2 Spring的下载和安装 4
1.3 Spring体系介绍 9
1.3.1 Spring的核心和Context 9
1.3.2 Spring的Web和MVC 9
1.3.3 Spring的面向切面编程 10
1.3.4 Spring的持久化支持 10
1.4 Spring的基本设计思想 10
1.4.1 单态模式的回顾 10
1.4.2 工厂模式的回顾 11
1.4.3 Spring对单态与工厂模式的实现 14
1.5 Spring的核心机制 15
1.5.1 理解依赖注入 15
1.5.2 设值注入 16
1.5.3 构造注入 20
1.5.4 两种注入方式的对比 21
1.6 小结 21
第2章 Spring中的bean和BeanFactory 22
2.1 bean简介 22
2.2 bean定义和bean实例化 22
2.2.1 BeanFactory接口介绍 22
2.2.2 在Context定义bean 24
2.2.3 bean的基本行为 25
2.2.4 bean与JavaBean的关系 26
2.2.5 实例化bean 28
2.3 bean特性的深入 35
2.3.1 bean的高级属性、合作者 36
2.3.2 使用depends-on强制初始化bean 41
2.3.3 自动装配 41
2.3.4 依赖检查 44
2.4 bean的生命周期 46
2.4.1 了解bean的生命周期 46
2.4.2 协调不同步的bean 46
2.4.3 定制bean的生命周期行为 49
2.5 小结 52
第3章 bean的高级功能 53
3.1 bean的继承 53
3.1.1 抽象bean 53
3.1.2 定义子bean 54
3.1.3 Spring中bean的继承与Java中继承的区别 56
3.2 高级依赖注入 56
3.2.1 属性值的依赖注入 56
3.2.2 field值的依赖注入 59
3.2.3 方法返回值的依赖注入 60
3.3 使用BeanPostProcessor 63
3.4 使用BeanFactoryPostProcessor 65
3.4.1 使用属性占位符配置器 66
3.4.2 另一种属性占位符配置器PropertyOverrideConfigurer 67
3.5 与容器交互 68
3.5.1 工厂bean简介与配置 68
3.5.2 使用FactoryBean接口 70
3.5.3 使用BeanFactoryAware获取BeanFactory 72
3.5.4 使用BeanNameAware回调本身 74
3.6 ApplicationContext介绍 75
3.6.1 国际化支持 75
3.6.2 事件处理 77
3.6.3 Web应用中自动加载ApplicationContext 79
3.7 汇总多个XML配置文件 80
3.7.1 ApplicationContext加载多个配置文件 80
3.7.2 Web应用启动时加载多个配置文件 81
3.7.3 XML配置文件中导入其他配置文件 81
3.8 小结 81
第4章 Spring中的资源访问 82
4.1 传统资源访问与Spring的资源访问 82
4.1.1 传统资源访问 82
4.1.2 Spring的资源访问 83
4.2 Resource实现类 85
4.2.1 访问网络资源 85
4.2.2 使用ClassPathResource 86
4.2.3 访问文件系统资源 87
4.2.4 访问应用相关资源 88
4.2.5 访问输入流资源 90
4.2.6 访问字节数组资源 92
4.3 ResourceLoader接口和ResourceLoaderAware接口 93
4.3.1 使用ResourceLoader 93
4.3.2 使用ResourceLoaderAware 95
4.4 使用Resource作为属性 96
4.5 ApplicationContext中使用资源 99
4.5.1 实例化ApplicationContext 99
4.5.2 classpath*前缀的用法 101
4.5.3 访问文件系统 103
4.6 小结 104
第5章 表现层数据的处理 105
5.1 表现层数据涉及的处理 105
5.1.1 类型转换 105
5.1.2 数据校验 108
5.2 Spring支持的表现层数据处理 112
5.2.1 数据绑定 112
5.2.2 bean包装 113
5.2.3 数据校验 113
5.3 Bean包装详解 113
5.3.1 修改、获取Bean属性 113
5.3.2 类型转换 116
5.3.3 内建的PropertyEditor 118
5.3.4 自定义PropertyEditor 119
5.4 数据校验详解 121
5.4.1 实现校验器 122
5.4.2 显示出错提示 123
5.5 小结 125
第6章 Spring对AOP的支持 126
6.1 AOP入门 126
6.1.1 AOP中的概念 126
6.1.2 AOP代理 127
6.2 Spring对AOP的支持 130
6.2.1 简介 130
6.2.2 Spring的切入点 131
6.2.3 Spring的处理 134
6.3 创建AOP代理 150
6.3.1 基本概念 150
6.3.2 代理接口 151
6.3.3 代理类 155
6.4 实用的代理工厂类 155
6.4.1 使用TransactionProxyFactoryBean 156
6.4.2 使用LocalStatelessSessionProxyFactoryBean 158
6.5 简洁的代理定义方式 160
6.6 自动代理 161
6.6.1 定义自动代理bean 161
6.6.2 自动代理的实现 161
6.7 编程式创建AOP代理 164
6.8 操作代理 166
6.9 小结 167
第7章 Spring的事务管理 168
7.1 事务介绍 168
7.1.1 事务的基本概念 168
7.1.2 事务的特性 168
7.2 Spring中的事务 169
7.2.1 传统事务的特征和弱点 169
7.2.2 Spring事务的优势 169
7.3 使用事务管理器接口PlatformTransactionManager 170
7.4 编程式事务 174
7.4.1 使用TransactionTemplate 174
7.4.2 使用PlatformTransactionManager 176
7.5 声明式事务 177
7.5.1 使用声明式事务管理 177
7.5.2 根据BeanName自动创建事务代理 180
7.5.3 基于JDK1.5+的注释式事务代理配置 182
7.5.4 使用bean继承简化事务代理配置 185
7.6 关于事务管理的思考 186
7.6.1 编程式事务VS声明式事务 186
7.6.2 应用服务器管理事务 187
7.7 小结 187
第2部分 Spring与其他工具、框架整合应用 199
第8章 DAO支持 190
8.1 DAO模式介绍 190
8.1.1 J2EE应用的通用分层 190
8.1.2 编写DAO 192
8.1.3 如何使用DAO 196
8.2 Spring中DAO的体系 197
8.2.1 统一的异常继承体系 197
8.2.2 统一的DAO抽象 198
8.3 常见的DAO支持类 198
8.3.1 Spring对JDBC的DAO支持 199
8.3.2 Spring对Hibernate的DAO支持 202
8.4 DAO模式的异常处理 206
8.4.1 编写DAO异常类 206
8.4.2 改写DAO实现类 207
8.5 小结 209
第9章 使用JDBC操作数据库 210
9.1 JDBC基础 210
9.1.1 JDBC简介 210
9.1.2 JDBC驱动 210
9.1.3 JDBC常用接口和类简介 211
9.1.4 传统的JDBC访问数据库 213
9.2 数据库连接池 213
9.2.1 数据库连接池介绍 213
9.2.2 常见的数据库连接池 217
9.3 Spring的JDBC体系 221
9.3.1 Spring的JDBC封装 221
9.3.2 Spring的JDBC与传统JDBC的对比 222
9.4 使用JdbcTemplate访问数据库 223
9.4.1 执行简单查询 223
9.4.2 执行简单更新 224
9.4.3 执行简单DDL 225
9.4.4 使用StatementCallback访问数据库 226
9.4.5 使用PreparedStatementCallback访问数据库 227
9.5 连接数据库的辅助类 228
9.5.1 使用数据源工具类(DataSourceUtils) 228
9.5.2 智能数据源(SmartDataSource)接口介绍 229
9.5.3 单连接数据源SingleConnectionDataSource的使用 229
9.5.4 另一个数据源实现:DriverManagerDataSource 230
9.5.5 数据源的事务管理器DataSourceTransactionManager 231
9.6 数据库操作的对象化 233
9.6.1 查询结果对象化 233
9.6.2 查询对象 235
9.6.3 更新对象 237
9.6.4 使用StoredProcedure调用存储过程或函数 238
9.6.5 使用StoredProcedure调用函数 240
9.6.6 使用SqlFunction执行查询或调用函数 241
9.7 小结 243
第10章 整合Hibernate执行持久化操作 244
10.1 ORM介绍 244
10.1.1 什么是ORM 244
10.1.2 为什么需要ORM 244
10.1.3 流行的ORM框架简介 245
10.2 Hibernate介绍 245
10.2.1 采用传统JDBC操作数据库 245
10.2.2 Hibernate下载和安装 247
10.2.3 Hibernate初探 247
10.2.4 Hibernate的基本映射 250
10.2.5 Hibernate的关系映射 251
10.2.6 Hibernate的HQL查询 257
10.2.7 Hibernate的Criteria查询 261
10.3 整合Hibernate 261
10.4 管理SessionFactory 262
10.5 Spring对Hibernate的简化 263
10.6 使用HibernateTemplate 264
10.6.1 HibernateTemplate的常规用法 266
10.6.2 Hibernate的复杂用法HibernateCallback 267
10.7 Hibernate的DAO实现 268
10.7.1 继承HibernateDaoSupport实现DAO 268
10.7.2 基于Hibernate 3.0实现DAO 271
10.8 事务管理 272
10.8.1 编程式的事务管理 272
10.8.2 声明式的事务管理 274
10.8.3 事务策略的思考 276
10.9 小结 276
第11章 Spring的MVC框架 277
11.1 MVC入门 277
11.1.1 传统的Model 1和Model 2 277
11.1.2 MVC及其优势 278
11.2 Web MVC框架简介 279
11.2.1 目前流行的MVC框架 279
11.2.2 MVC框架的基本特征 280
11.3 Spring MVC的特点和优、劣势 280
11.4 Spring MVC框架中的角色 281
11.4.1 核心控制器DispatcherServlet 281
11.4.2 业务控制器 282
11.4.3 处理器映射 282
11.4.4 视图和视图解析器 282
11.4.5 模型 282
11.4.6 Command对象 282
11.5 核心控制器 282
11.6 控制器映射 283
11.6.1 使用BeanNameUrlHandlerMapping 283
11.6.2 SimpleUrlHandlerMapping 286
11.7 业务控制器 287
11.7.1 AbstractController和WebContentGenerator 287
11.7.2 简单控制器 288
11.7.3 使用ParameterizableViewController 288
11.7.4 使用UrlFilenameViewController 289
11.7.5 CommandController类介绍 290
11.7.6 使用SimpleFormController 291
11.7.7 使用MultiActionController 293
11.8 模型 296
11.9 视图和视图解析器 296
11.9.1 InternalResourceViewResolver示例 297
11.9.2 视图解析器的链式处理 298
11.9.3 重定向视图 298
11.10 Spring MVC中的程序国际化 300
11.10.1 自动化的国际化信息解析 300
11.10.2 自定义的国际化信息解析 301
11.11 数据校验 302
11.12 文件上传 304
11.12.1 使用MultipartResolver 304
11.12.2 定义Command对象和控制器 305
11.13 小结 307
第12章 整合第三方MVC框架 308
12.1 目前流行的MVC框架分析 308
12.1.1 Struts 308
12.1.2 WebWork2 309
12.1.3 JSF 309
12.1.4 Tapestry 309
12.2 Spring整合第三方MVC框架的通用配置 310
12.2.1 采用ServletContextListener创建ApplicationContext 310
12.2.2 采用load-on-startup Servlet创建ApplicationContext 312
12.3 整合Struts 313
12.3.1 Struts的使用 313
12.3.2 Spring管理Struts的Action 318
12.3.3 使用ActionSupport代替Action 325
12.4 整合WebWork2 326
12.4.1 使用Webwork2 327
12.4.2 WebWork2与Spring的整合 334
12.5 整合JSF 335
12.5.1 使用JSF 336
12.5.2 JSF的依赖注入 341
12.5.3 利用JSF的依赖注入整合Spring 342
12.5.4 利用FacesContextUtils 345
12.6 小结 345
第13章 整合第三方表现层技术 346
13.1 表现层介绍 346
13.1.1 表现层的概念 346
13.1.2 表现层的功能 346
13.1.3 常见的表现层技术 346
13.2 整合JSTL 347
13.2.1 JSTL介绍 347
13.2.2 使用JSTLView视图解析器 348
13.3 整合Velocity 350
13.3.1 Velocity介绍 351
13.3.2 Spring对Velocity的支持 353
13.3.3 管理Velocity的模板 355
13.3.4 处理表单 357
13.4 整合XSTL视图 358
13.4.1 XML知识简介 358
13.4.2 XSTL介绍 360
13.4.3 Spring对XSLT视图的支持 361
13.4.4 转换模型的数据 362
13.5 生成Excel表格或PDF文档 364
13.5.1 POI介绍 364
13.5.2 iText简介 367
13.5.3 生成Excel表格 369
13.5.4 创建PDF文档 371
13.6 小结 374
第14章 通过Spring进行远程访问和WebService 375
14.1 远程访问简介 375
14.1.1 远程访问的意义 375
14.1.2 常用的远程访问技术 376
14.2 WebService简介 376
14.2.1 WebService的特点 376
14.2.2 WebService的主要技术 378
14.3 Spring对远程访问的支持 379
14.4 通过RMI提供服务 379
14.4.1 RMI介绍 379
14.4.2 使用RmiServiceExporter提供服务 382
14.4.3 在客户端连接服务 384
14.5 使用Hessian通过Http提供服务 385
14.5.1 Hessian介绍 386
14.5.2 为Hessian装配DispatcherServlet 388
14.5.3 使用HessianServiceExporter提供bean服务 389
14.5.4 在客户端连接服务 390
14.6 通过Web Service提供服务 391
14.6.1 WebService的开源实现 391
14.6.2 Spring对WebService的支持 394
14.6.3 从客户端访问Spring发布的WebService 397
14.7 使用httpInvoker提供远程服务 398
14.7.1 输出业务对象 398
14.7.2 客户端连接服务 400
14.8 小结 401
第15章 EJB的访问和实现 402
15.1 EJB简介 402
15.1.1 EJB的概念和分类 402
15.1.2 如何编写EJB 403
15.1.3 EJB的部署与运行 406
15.1.4 程序中调用EJB 406
15.2 传统EJB访问的讨论 408
15.2.1 常规的EJB访问策略 408
15.2.2 传统EJB访问的不足 410
15.2.3 Spring的EJB访问策略 411
15.3 利用Spring简化EJB的访问 411
15.3.1 访问Local无状态会话Bean 411
15.3.2 访问Remote无状态会话Bean 415
15.4 Spring提倡的EJB架构 420
15.4.1 使用DI将EJB的业务逻辑委托给POJO 420
15.4.2 管理EJB中的Spring容器 422
15.5 小结 423
第16章 Spring中使用JMS 424
16.1 JMS介绍 424
16.1.1 JMS简介 424
16.1.2 JMS开发 425
16.2 消息驱动EJB介绍 435
16.2.1 消息驱动EJB的bean类 435
16.2.2 消息驱动EJB的配置文件 437
16.3 Spring对JMS的支持 438
16.3.1 Spring的JmsTemplate 439
16.3.2 管理连接工厂 439
16.3.3 管理消息目的 440
16.3.4 JMS与事务 440
16.4 通过Spring发送消息 440
16.4.1 使用JmsTemplate的发送消息 440
16.4.2 发送消息的配置文件 441
16.4.3 完成消息的发送 443
16.5 通过Spring接收消息 443
16.5.1 使用JmsTemplate的接收消息 443
16.5.2 接收消息的配置文件 444
16.5.3 完成消息的接收 445
16.6 Pub/Sub模型的JMS消息处理 445
16.6.1 修改后的消息发送文件 446
16.6.2 消息发送的配置 447
16.6.3 修改后的消息接收文件 447
16.6.4 消息接收的配置 448
16.7 小结 449
第17章 利用Spring发送邮件 450
17.1 E-mail简介 450
17.1.1 SMTP协议简介 450
17.1.2 POP3协议简介 451
17.1.3 E-mail的用处 451
17.2 JavaMail介绍 451
17.2.1 JavaMail下载和安装 452
17.2.2 JavaMail的使用 452
17.3 Spring的邮件抽象体系 458
17.4 使用Spring的邮件体系发送邮件 459
17.4.1 使用MailSender发送简单邮件 459
17.4.2 使用JavaMailSender发送MimeMessage信息 460
17.4.3 综合应用 463
17.5 小结 467
第18章 Spring中的任务调度 469
18.1 任务调度的概念 469
18.1.1 任务调度简介 469
18.1.2 任务调度的作用 469
18.1.3 常见的任务调度支持类 469
18.2 JDK Timer介绍 470
18.2.1 建立任务 470
18.2.2 调度任务 471
18.3 OpenSymphony的Quartz介绍 472
18.3.1 Quartz的下载和安装 472
18.3.2 Quartz的使用 473
18.4 在Spring中使用Timer 477
18.4.1 继承TimerTask创建任务 477
18.4.2 使用MethodInvokingTimerTaskFactoryBean创建任务 480
18.5 在Spring中使用Quartz 484
18.5.1 继承QuartzJobBean创建作业 484
18.5.2 使用MethodInvokingJobDetailFactoryBean工厂bean创建作业 488
18.6 小结 490
第19章 利用Spring简化测试 491
19.1 软件测试介绍 491
19.1.1 什么是软件测试 491
19.1.2 软件测试的目的 492
19.1.3 测试分类 492
19.2 JUnit介绍 493
19.2.1 单元测试概述 493
19.2.2 JUnit概述 493
19.2.3 JUnit的下载和安装 494
19.2.4 JUnit中常用的接口和类 494
19.2.5 JUnit的使用 495
19.3 利用Spring的mock进行单元测试 499
19.3.1 Spring的mock类 500
19.3.2 利用mock类测试控制器 500
19.4 利用DI完成集成测试 503
19.4.1 Spring的辅助测试类 503
19.4.2 持久层组件的测试 503
19.4.3 业务层组件测试 508
19.5 小结 512
第3部分 Spring典型案例 513
第20章 完整实例:新闻发布系统 514
20.1 系统架构说明 514
20.1.1 架构处理流程框架图 514
20.1.2 系统架构说明 515
20.1.3 简单的处理流程示例 515
20.1.4 对系统架构的疑问 516
20.2 Domain层 516
20.2.1 编写Domain Object 516
20.2.2 编写PO的映射配置文件 522
20.2.3 Spring整合Hibernate 524
20.3 持久层 525
20.3.1 DAO模式的简单介绍 525
20.3.2 使用DAO模式的原因 526
20.3.3 编写DAO的代码 527
20.4 业务逻辑层 531
20.4.1 Facade模式介绍 531
20.4.2 Facade接口的编写 532
20.4.3 Facade接口的实现类 533
20.5 Web层设计 538
20.5.1 MVC模式的简单回顾 538
20.5.1 Web应用使用WebWork 538
20.5.2 WebWork的简单示例 539
20.5.3 WebWork的Action驱动模式 542
20.5.4 WebWork整合Spring 543
20.5.5 WebWork与Spring的整合的另一种方式 546
20.5.6 视图层与FreeMarker 548
20.6 系统实现及部分源代码 548
20.6.1 在Eclipse下开发 548
20.6.2 前端与视图层编码 552
20.7 系统最后的思考 571
20.7.1 传统EJB架构的实现 572
20.7.1 EJB架构与轻量级架构的对比 574
20.8 小结 576
第 21章 完整实例:电子拍卖系统 577
21.1 项目介绍和主要技术 577
21.1.1 应用背景 577
21.1.2 功能介绍 577
21.1.3 相关技术介绍 578
21.2 总体设计和概要说明 579
21.2.1 系统的总体架构设计 579
21.2.2 系统的模块结构图 580
21.2.3 系统的业务流程图 580
21.2.4 数据库设计 581
21.2.5 系统用例图 582
21.3 详细设计 583
21.4 Domain层实现 583
21.4.1 设计Domain Object 584
21.4.2 Domain Object的类图 584
21.4.3 Domain Object的实现 587
21.4.4 Domain Object的映射 593
21.5 DAO层实现 598
21.5.1 DAO的基础配置 599
21.5.2 DAO组件的设计 600
21.5.3 DAO组件的实现 605
21.5.4 DAO组件的配置 611
21.6 Service层实现 612
21.6.1 Service组件设计 612
21.6.2 Service层的异常处理 614
21.6.3 Service组件的实现 614
21.7 Web层实现 628
21.7.1 映射ActionServlet的URL 628
21.7.2 Struts与Spring的整合 628
21.7.3 控制器的实现 629
21.7.4 数据校验 631
21.7.5 异常处理 634
21.7.6 权限检查 635
21.7.7 控制器配置 637
21.7.8 图形验证码的实现 643
21.8 测试 646
21.8.1 利用AbstractTransactionalDataSourceSpringContextTests测试DAO组件 646
21.8.2 测试业务层组件 648
21.8.3 测试的运行 649
21.9 小结 649
第22章 完整实例:人力资源管理系统 651
22.1 JDK1.5的新特性介绍 651
22.1.1 泛型 651
22.1.2 静态导入 653
22.1.3 自动包装 654
22.1.4 ForEach循环 655
22.1.5 元数据支持 655
22.2 项目背景和主要技术 656
22.2.1 应用背景 657
22.2.2 相关技术介绍 657
22.3 系统结构设计和概要分析 658
22.3.1 系统的模块结构图 658
22.3.2 系统的业务流程图 659
22.3.3 系统用例图 660
22.4 Domain层实现 661
22.4.1 设计Domain Object 661
22.4.2 Domain Object的详细类图 662
22.4.4 数据库的生成 665
22.4.5 Domain Object的实现 666
22.4.6 Domain Object的映射 669
22.5 DAO层实现 673
22.5.1 DAO的基础配置 674
22.5.2 DAO组件的设计 675
22.5.3 DAO组件的实现 684
22.5.4 DAO组件的配置 695
22.6 Service层实现 696
22.6.1 Service组件设计 696
22.6.2 Service组件的实现 697
22.7 Web层实现 710
22.7.1 映射ActionServlet的URL 710
22.7.2 Struts与Spring的整合 711
22.7.3 控制器的实现 712
22.7.4 数据校验 712
22.7.5 异常处理 715
22.7.6 权限检查 715
22.7.7 控制器配置 718
22.8 小结 723
第1章 Spring概述 2
1.1 Spring的起源和背景 2
1.2 Spring初探 3
1.2.1 运行Spring所需的环境 3
1.2.2 Spring的下载和安装 4
1.3 Spring体系介绍 9
1.3.1 Spring的核心和Context 9
1.3.2 Spring的Web和MVC 9
1.3.3 Spring的面向切面编程 10
1.3.4 Spring的持久化支持 10
1.4 Spring的基本设计思想 10
1.4.1 单态模式的回顾 10
1.4.2 工厂模式的回顾 11
1.4.3 Spring对单态与工厂模式的实现 14
1.5 Spring的核心机制 15
1.5.1 理解依赖注入 15
1.5.2 设值注入 16
1.5.3 构造注入 20
1.5.4 两种注入方式的对比 21
1.6 小结 21
第2章 Spring中的bean和BeanFactory 22
2.1 bean简介 22
2.2 bean定义和bean实例化 22
2.2.1 BeanFactory接口介绍 22
2.2.2 在Context定义bean 24
2.2.3 bean的基本行为 25
2.2.4 bean与JavaBean的关系 26
2.2.5 实例化bean 28
2.3 bean特性的深入 35
2.3.1 bean的高级属性、合作者 36
2.3.2 使用depends-on强制初始化bean 41
2.3.3 自动装配 41
2.3.4 依赖检查 44
2.4 bean的生命周期 46
2.4.1 了解bean的生命周期 46
2.4.2 协调不同步的bean 46
2.4.3 定制bean的生命周期行为 49
2.5 小结 52
第3章 bean的高级功能 53
3.1 bean的继承 53
3.1.1 抽象bean 53
3.1.2 定义子bean 54
3.1.3 Spring中bean的继承与Java中继承的区别 56
3.2 高级依赖注入 56
3.2.1 属性值的依赖注入 56
3.2.2 field值的依赖注入 59
3.2.3 方法返回值的依赖注入 60
3.3 使用BeanPostProcessor 63
3.4 使用BeanFactoryPostProcessor 65
3.4.1 使用属性占位符配置器 66
3.4.2 另一种属性占位符配置器PropertyOverrideConfigurer 67
3.5 与容器交互 68
3.5.1 工厂bean简介与配置 68
3.5.2 使用FactoryBean接口 70
3.5.3 使用BeanFactoryAware获取BeanFactory 72
3.5.4 使用BeanNameAware回调本身 74
3.6 ApplicationContext介绍 75
3.6.1 国际化支持 75
3.6.2 事件处理 77
3.6.3 Web应用中自动加载ApplicationContext 79
3.7 汇总多个XML配置文件 80
3.7.1 ApplicationContext加载多个配置文件 80
3.7.2 Web应用启动时加载多个配置文件 81
3.7.3 XML配置文件中导入其他配置文件 81
3.8 小结 81
第4章 Spring中的资源访问 82
4.1 传统资源访问与Spring的资源访问 82
4.1.1 传统资源访问 82
4.1.2 Spring的资源访问 83
4.2 Resource实现类 85
4.2.1 访问网络资源 85
4.2.2 使用ClassPathResource 86
4.2.3 访问文件系统资源 87
4.2.4 访问应用相关资源 88
4.2.5 访问输入流资源 90
4.2.6 访问字节数组资源 92
4.3 ResourceLoader接口和ResourceLoaderAware接口 93
4.3.1 使用ResourceLoader 93
4.3.2 使用ResourceLoaderAware 95
4.4 使用Resource作为属性 96
4.5 ApplicationContext中使用资源 99
4.5.1 实例化ApplicationContext 99
4.5.2 classpath*前缀的用法 101
4.5.3 访问文件系统 103
4.6 小结 104
第5章 表现层数据的处理 105
5.1 表现层数据涉及的处理 105
5.1.1 类型转换 105
5.1.2 数据校验 108
5.2 Spring支持的表现层数据处理 112
5.2.1 数据绑定 112
5.2.2 bean包装 113
5.2.3 数据校验 113
5.3 Bean包装详解 113
5.3.1 修改、获取Bean属性 113
5.3.2 类型转换 116
5.3.3 内建的PropertyEditor 118
5.3.4 自定义PropertyEditor 119
5.4 数据校验详解 121
5.4.1 实现校验器 122
5.4.2 显示出错提示 123
5.5 小结 125
第6章 Spring对AOP的支持 126
6.1 AOP入门 126
6.1.1 AOP中的概念 126
6.1.2 AOP代理 127
6.2 Spring对AOP的支持 130
6.2.1 简介 130
6.2.2 Spring的切入点 131
6.2.3 Spring的处理 134
6.3 创建AOP代理 150
6.3.1 基本概念 150
6.3.2 代理接口 151
6.3.3 代理类 155
6.4 实用的代理工厂类 155
6.4.1 使用TransactionProxyFactoryBean 156
6.4.2 使用LocalStatelessSessionProxyFactoryBean 158
6.5 简洁的代理定义方式 160
6.6 自动代理 161
6.6.1 定义自动代理bean 161
6.6.2 自动代理的实现 161
6.7 编程式创建AOP代理 164
6.8 操作代理 166
6.9 小结 167
第7章 Spring的事务管理 168
7.1 事务介绍 168
7.1.1 事务的基本概念 168
7.1.2 事务的特性 168
7.2 Spring中的事务 169
7.2.1 传统事务的特征和弱点 169
7.2.2 Spring事务的优势 169
7.3 使用事务管理器接口PlatformTransactionManager 170
7.4 编程式事务 174
7.4.1 使用TransactionTemplate 174
7.4.2 使用PlatformTransactionManager 176
7.5 声明式事务 177
7.5.1 使用声明式事务管理 177
7.5.2 根据BeanName自动创建事务代理 180
7.5.3 基于JDK1.5+的注释式事务代理配置 182
7.5.4 使用bean继承简化事务代理配置 185
7.6 关于事务管理的思考 186
7.6.1 编程式事务VS声明式事务 186
7.6.2 应用服务器管理事务 187
7.7 小结 187
第2部分 Spring与其他工具、框架整合应用 199
第8章 DAO支持 190
8.1 DAO模式介绍 190
8.1.1 J2EE应用的通用分层 190
8.1.2 编写DAO 192
8.1.3 如何使用DAO 196
8.2 Spring中DAO的体系 197
8.2.1 统一的异常继承体系 197
8.2.2 统一的DAO抽象 198
8.3 常见的DAO支持类 198
8.3.1 Spring对JDBC的DAO支持 199
8.3.2 Spring对Hibernate的DAO支持 202
8.4 DAO模式的异常处理 206
8.4.1 编写DAO异常类 206
8.4.2 改写DAO实现类 207
8.5 小结 209
第9章 使用JDBC操作数据库 210
9.1 JDBC基础 210
9.1.1 JDBC简介 210
9.1.2 JDBC驱动 210
9.1.3 JDBC常用接口和类简介 211
9.1.4 传统的JDBC访问数据库 213
9.2 数据库连接池 213
9.2.1 数据库连接池介绍 213
9.2.2 常见的数据库连接池 217
9.3 Spring的JDBC体系 221
9.3.1 Spring的JDBC封装 221
9.3.2 Spring的JDBC与传统JDBC的对比 222
9.4 使用JdbcTemplate访问数据库 223
9.4.1 执行简单查询 223
9.4.2 执行简单更新 224
9.4.3 执行简单DDL 225
9.4.4 使用StatementCallback访问数据库 226
9.4.5 使用PreparedStatementCallback访问数据库 227
9.5 连接数据库的辅助类 228
9.5.1 使用数据源工具类(DataSourceUtils) 228
9.5.2 智能数据源(SmartDataSource)接口介绍 229
9.5.3 单连接数据源SingleConnectionDataSource的使用 229
9.5.4 另一个数据源实现:DriverManagerDataSource 230
9.5.5 数据源的事务管理器DataSourceTransactionManager 231
9.6 数据库操作的对象化 233
9.6.1 查询结果对象化 233
9.6.2 查询对象 235
9.6.3 更新对象 237
9.6.4 使用StoredProcedure调用存储过程或函数 238
9.6.5 使用StoredProcedure调用函数 240
9.6.6 使用SqlFunction执行查询或调用函数 241
9.7 小结 243
第10章 整合Hibernate执行持久化操作 244
10.1 ORM介绍 244
10.1.1 什么是ORM 244
10.1.2 为什么需要ORM 244
10.1.3 流行的ORM框架简介 245
10.2 Hibernate介绍 245
10.2.1 采用传统JDBC操作数据库 245
10.2.2 Hibernate下载和安装 247
10.2.3 Hibernate初探 247
10.2.4 Hibernate的基本映射 250
10.2.5 Hibernate的关系映射 251
10.2.6 Hibernate的HQL查询 257
10.2.7 Hibernate的Criteria查询 261
10.3 整合Hibernate 261
10.4 管理SessionFactory 262
10.5 Spring对Hibernate的简化 263
10.6 使用HibernateTemplate 264
10.6.1 HibernateTemplate的常规用法 266
10.6.2 Hibernate的复杂用法HibernateCallback 267
10.7 Hibernate的DAO实现 268
10.7.1 继承HibernateDaoSupport实现DAO 268
10.7.2 基于Hibernate 3.0实现DAO 271
10.8 事务管理 272
10.8.1 编程式的事务管理 272
10.8.2 声明式的事务管理 274
10.8.3 事务策略的思考 276
10.9 小结 276
第11章 Spring的MVC框架 277
11.1 MVC入门 277
11.1.1 传统的Model 1和Model 2 277
11.1.2 MVC及其优势 278
11.2 Web MVC框架简介 279
11.2.1 目前流行的MVC框架 279
11.2.2 MVC框架的基本特征 280
11.3 Spring MVC的特点和优、劣势 280
11.4 Spring MVC框架中的角色 281
11.4.1 核心控制器DispatcherServlet 281
11.4.2 业务控制器 282
11.4.3 处理器映射 282
11.4.4 视图和视图解析器 282
11.4.5 模型 282
11.4.6 Command对象 282
11.5 核心控制器 282
11.6 控制器映射 283
11.6.1 使用BeanNameUrlHandlerMapping 283
11.6.2 SimpleUrlHandlerMapping 286
11.7 业务控制器 287
11.7.1 AbstractController和WebContentGenerator 287
11.7.2 简单控制器 288
11.7.3 使用ParameterizableViewController 288
11.7.4 使用UrlFilenameViewController 289
11.7.5 CommandController类介绍 290
11.7.6 使用SimpleFormController 291
11.7.7 使用MultiActionController 293
11.8 模型 296
11.9 视图和视图解析器 296
11.9.1 InternalResourceViewResolver示例 297
11.9.2 视图解析器的链式处理 298
11.9.3 重定向视图 298
11.10 Spring MVC中的程序国际化 300
11.10.1 自动化的国际化信息解析 300
11.10.2 自定义的国际化信息解析 301
11.11 数据校验 302
11.12 文件上传 304
11.12.1 使用MultipartResolver 304
11.12.2 定义Command对象和控制器 305
11.13 小结 307
第12章 整合第三方MVC框架 308
12.1 目前流行的MVC框架分析 308
12.1.1 Struts 308
12.1.2 WebWork2 309
12.1.3 JSF 309
12.1.4 Tapestry 309
12.2 Spring整合第三方MVC框架的通用配置 310
12.2.1 采用ServletContextListener创建ApplicationContext 310
12.2.2 采用load-on-startup Servlet创建ApplicationContext 312
12.3 整合Struts 313
12.3.1 Struts的使用 313
12.3.2 Spring管理Struts的Action 318
12.3.3 使用ActionSupport代替Action 325
12.4 整合WebWork2 326
12.4.1 使用Webwork2 327
12.4.2 WebWork2与Spring的整合 334
12.5 整合JSF 335
12.5.1 使用JSF 336
12.5.2 JSF的依赖注入 341
12.5.3 利用JSF的依赖注入整合Spring 342
12.5.4 利用FacesContextUtils 345
12.6 小结 345
第13章 整合第三方表现层技术 346
13.1 表现层介绍 346
13.1.1 表现层的概念 346
13.1.2 表现层的功能 346
13.1.3 常见的表现层技术 346
13.2 整合JSTL 347
13.2.1 JSTL介绍 347
13.2.2 使用JSTLView视图解析器 348
13.3 整合Velocity 350
13.3.1 Velocity介绍 351
13.3.2 Spring对Velocity的支持 353
13.3.3 管理Velocity的模板 355
13.3.4 处理表单 357
13.4 整合XSTL视图 358
13.4.1 XML知识简介 358
13.4.2 XSTL介绍 360
13.4.3 Spring对XSLT视图的支持 361
13.4.4 转换模型的数据 362
13.5 生成Excel表格或PDF文档 364
13.5.1 POI介绍 364
13.5.2 iText简介 367
13.5.3 生成Excel表格 369
13.5.4 创建PDF文档 371
13.6 小结 374
第14章 通过Spring进行远程访问和WebService 375
14.1 远程访问简介 375
14.1.1 远程访问的意义 375
14.1.2 常用的远程访问技术 376
14.2 WebService简介 376
14.2.1 WebService的特点 376
14.2.2 WebService的主要技术 378
14.3 Spring对远程访问的支持 379
14.4 通过RMI提供服务 379
14.4.1 RMI介绍 379
14.4.2 使用RmiServiceExporter提供服务 382
14.4.3 在客户端连接服务 384
14.5 使用Hessian通过Http提供服务 385
14.5.1 Hessian介绍 386
14.5.2 为Hessian装配DispatcherServlet 388
14.5.3 使用HessianServiceExporter提供bean服务 389
14.5.4 在客户端连接服务 390
14.6 通过Web Service提供服务 391
14.6.1 WebService的开源实现 391
14.6.2 Spring对WebService的支持 394
14.6.3 从客户端访问Spring发布的WebService 397
14.7 使用httpInvoker提供远程服务 398
14.7.1 输出业务对象 398
14.7.2 客户端连接服务 400
14.8 小结 401
第15章 EJB的访问和实现 402
15.1 EJB简介 402
15.1.1 EJB的概念和分类 402
15.1.2 如何编写EJB 403
15.1.3 EJB的部署与运行 406
15.1.4 程序中调用EJB 406
15.2 传统EJB访问的讨论 408
15.2.1 常规的EJB访问策略 408
15.2.2 传统EJB访问的不足 410
15.2.3 Spring的EJB访问策略 411
15.3 利用Spring简化EJB的访问 411
15.3.1 访问Local无状态会话Bean 411
15.3.2 访问Remote无状态会话Bean 415
15.4 Spring提倡的EJB架构 420
15.4.1 使用DI将EJB的业务逻辑委托给POJO 420
15.4.2 管理EJB中的Spring容器 422
15.5 小结 423
第16章 Spring中使用JMS 424
16.1 JMS介绍 424
16.1.1 JMS简介 424
16.1.2 JMS开发 425
16.2 消息驱动EJB介绍 435
16.2.1 消息驱动EJB的bean类 435
16.2.2 消息驱动EJB的配置文件 437
16.3 Spring对JMS的支持 438
16.3.1 Spring的JmsTemplate 439
16.3.2 管理连接工厂 439
16.3.3 管理消息目的 440
16.3.4 JMS与事务 440
16.4 通过Spring发送消息 440
16.4.1 使用JmsTemplate的发送消息 440
16.4.2 发送消息的配置文件 441
16.4.3 完成消息的发送 443
16.5 通过Spring接收消息 443
16.5.1 使用JmsTemplate的接收消息 443
16.5.2 接收消息的配置文件 444
16.5.3 完成消息的接收 445
16.6 Pub/Sub模型的JMS消息处理 445
16.6.1 修改后的消息发送文件 446
16.6.2 消息发送的配置 447
16.6.3 修改后的消息接收文件 447
16.6.4 消息接收的配置 448
16.7 小结 449
第17章 利用Spring发送邮件 450
17.1 E-mail简介 450
17.1.1 SMTP协议简介 450
17.1.2 POP3协议简介 451
17.1.3 E-mail的用处 451
17.2 JavaMail介绍 451
17.2.1 JavaMail下载和安装 452
17.2.2 JavaMail的使用 452
17.3 Spring的邮件抽象体系 458
17.4 使用Spring的邮件体系发送邮件 459
17.4.1 使用MailSender发送简单邮件 459
17.4.2 使用JavaMailSender发送MimeMessage信息 460
17.4.3 综合应用 463
17.5 小结 467
第18章 Spring中的任务调度 469
18.1 任务调度的概念 469
18.1.1 任务调度简介 469
18.1.2 任务调度的作用 469
18.1.3 常见的任务调度支持类 469
18.2 JDK Timer介绍 470
18.2.1 建立任务 470
18.2.2 调度任务 471
18.3 OpenSymphony的Quartz介绍 472
18.3.1 Quartz的下载和安装 472
18.3.2 Quartz的使用 473
18.4 在Spring中使用Timer 477
18.4.1 继承TimerTask创建任务 477
18.4.2 使用MethodInvokingTimerTaskFactoryBean创建任务 480
18.5 在Spring中使用Quartz 484
18.5.1 继承QuartzJobBean创建作业 484
18.5.2 使用MethodInvokingJobDetailFactoryBean工厂bean创建作业 488
18.6 小结 490
第19章 利用Spring简化测试 491
19.1 软件测试介绍 491
19.1.1 什么是软件测试 491
19.1.2 软件测试的目的 492
19.1.3 测试分类 492
19.2 JUnit介绍 493
19.2.1 单元测试概述 493
19.2.2 JUnit概述 493
19.2.3 JUnit的下载和安装 494
19.2.4 JUnit中常用的接口和类 494
19.2.5 JUnit的使用 495
19.3 利用Spring的mock进行单元测试 499
19.3.1 Spring的mock类 500
19.3.2 利用mock类测试控制器 500
19.4 利用DI完成集成测试 503
19.4.1 Spring的辅助测试类 503
19.4.2 持久层组件的测试 503
19.4.3 业务层组件测试 508
19.5 小结 512
第3部分 Spring典型案例 513
第20章 完整实例:新闻发布系统 514
20.1 系统架构说明 514
20.1.1 架构处理流程框架图 514
20.1.2 系统架构说明 515
20.1.3 简单的处理流程示例 515
20.1.4 对系统架构的疑问 516
20.2 Domain层 516
20.2.1 编写Domain Object 516
20.2.2 编写PO的映射配置文件 522
20.2.3 Spring整合Hibernate 524
20.3 持久层 525
20.3.1 DAO模式的简单介绍 525
20.3.2 使用DAO模式的原因 526
20.3.3 编写DAO的代码 527
20.4 业务逻辑层 531
20.4.1 Facade模式介绍 531
20.4.2 Facade接口的编写 532
20.4.3 Facade接口的实现类 533
20.5 Web层设计 538
20.5.1 MVC模式的简单回顾 538
20.5.1 Web应用使用WebWork 538
20.5.2 WebWork的简单示例 539
20.5.3 WebWork的Action驱动模式 542
20.5.4 WebWork整合Spring 543
20.5.5 WebWork与Spring的整合的另一种方式 546
20.5.6 视图层与FreeMarker 548
20.6 系统实现及部分源代码 548
20.6.1 在Eclipse下开发 548
20.6.2 前端与视图层编码 552
20.7 系统最后的思考 571
20.7.1 传统EJB架构的实现 572
20.7.1 EJB架构与轻量级架构的对比 574
20.8 小结 576
第 21章 完整实例:电子拍卖系统 577
21.1 项目介绍和主要技术 577
21.1.1 应用背景 577
21.1.2 功能介绍 577
21.1.3 相关技术介绍 578
21.2 总体设计和概要说明 579
21.2.1 系统的总体架构设计 579
21.2.2 系统的模块结构图 580
21.2.3 系统的业务流程图 580
21.2.4 数据库设计 581
21.2.5 系统用例图 582
21.3 详细设计 583
21.4 Domain层实现 583
21.4.1 设计Domain Object 584
21.4.2 Domain Object的类图 584
21.4.3 Domain Object的实现 587
21.4.4 Domain Object的映射 593
21.5 DAO层实现 598
21.5.1 DAO的基础配置 599
21.5.2 DAO组件的设计 600
21.5.3 DAO组件的实现 605
21.5.4 DAO组件的配置 611
21.6 Service层实现 612
21.6.1 Service组件设计 612
21.6.2 Service层的异常处理 614
21.6.3 Service组件的实现 614
21.7 Web层实现 628
21.7.1 映射ActionServlet的URL 628
21.7.2 Struts与Spring的整合 628
21.7.3 控制器的实现 629
21.7.4 数据校验 631
21.7.5 异常处理 634
21.7.6 权限检查 635
21.7.7 控制器配置 637
21.7.8 图形验证码的实现 643
21.8 测试 646
21.8.1 利用AbstractTransactionalDataSourceSpringContextTests测试DAO组件 646
21.8.2 测试业务层组件 648
21.8.3 测试的运行 649
21.9 小结 649
第22章 完整实例:人力资源管理系统 651
22.1 JDK1.5的新特性介绍 651
22.1.1 泛型 651
22.1.2 静态导入 653
22.1.3 自动包装 654
22.1.4 ForEach循环 655
22.1.5 元数据支持 655
22.2 项目背景和主要技术 656
22.2.1 应用背景 657
22.2.2 相关技术介绍 657
22.3 系统结构设计和概要分析 658
22.3.1 系统的模块结构图 658
22.3.2 系统的业务流程图 659
22.3.3 系统用例图 660
22.4 Domain层实现 661
22.4.1 设计Domain Object 661
22.4.2 Domain Object的详细类图 662
22.4.4 数据库的生成 665
22.4.5 Domain Object的实现 666
22.4.6 Domain Object的映射 669
22.5 DAO层实现 673
22.5.1 DAO的基础配置 674
22.5.2 DAO组件的设计 675
22.5.3 DAO组件的实现 684
22.5.4 DAO组件的配置 695
22.6 Service层实现 696
22.6.1 Service组件设计 696
22.6.2 Service组件的实现 697
22.7 Web层实现 710
22.7.1 映射ActionServlet的URL 710
22.7.2 Struts与Spring的整合 711
22.7.3 控制器的实现 712
22.7.4 数据校验 712
22.7.5 异常处理 715
22.7.6 权限检查 715
22.7.7 控制器配置 718
22.8 小结 723
猜您喜欢