精通Spring 4.x ――企业应用开发实战

精通Spring 4.x ――企业应用开发实战 pdf epub mobi txt 电子书 下载 2025

陈雄华 著
图书标签:
  • Spring
  • Spring4
  • x
  • 企业应用
  • Java
  • 开发
  • 实战
  • 微服务
  • 后端
  • 编程
  • 教程
想要找书就要到 静思书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121304439
版次:1
商品编码:12100408
包装:平装
开本:16开
出版时间:2017-01-01
用纸:胶版纸
页数:820
字数:1312000
正文语种:中文

具体描述

产品特色

编辑推荐

适读人群 :具有一定Java基础的应用开发者,包括大专院校的计算机学科学生,使用Java进行应用开发的初,中,高级开发者。

本书是在《精通Spring 3.x——企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续了上一版本“追求深度,注重原理,不停留在技术表面”的写作风格,力求使读者在熟练使用Spring的各项功能的同时透彻理解Spring的内部实现,真正做到知其然并知其所以然。此外,本书重点突出了“实战性”的主题,力求使全书内容体现“从实际项目中来,到实际项目中去”的写作原则。



内容简介

Spring 4.0是Spring在积蓄4年后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域**开源平台的翘楚地位。Spring 4.0引入了众多Java开发者翘首以盼的基于Groovy Bean的配置、HTML 5/WebSocket支持等新功能,全面支持Java 8.0,*低要求是Java 6.0。这些新功能实用性强、易用性高,可大幅降低Java应用,特别是Java Web应用开发的难度,同时有效提升应用开发的优雅性。本书是在《精通Spring 3.x――企业应用开发详解》的基础上,历时一年的重大调整改版而成的,延续了上一版本“追求深度,注重原理,不停留在技术表面”的写作风格,力求使读者在熟练使用Spring的各项功能的同时透彻理解Spring的内部实现,真正做到知其然并知其所以然。此外,本书重点突出了“实战性”的主题,力求使全书内容体现“从实际项目中来,到实际项目中去”的写作原则。

作者简介

陈雄华

技术高手,毕业于厦门大学计算机与信息工程学院,倾心Spring技术研究多年,是ROP开源项目创始人,担任过多家公司的系统架构师、技术总监,主持过多个大型企业级应用及多家公司基础技术平台的研发,拥有丰富的一线实战经验。出版《精通JBuilder 2005》、《精通Spring 3.x》、《Spring就这么简单》等多本技术书籍,广受读者好评。


林开雄

资深软件开发经理,拥有10余年软件开发经验,对Spring、大数据、应用虚拟化、微服务等开源技术的应用和实现原理有深入研究,拥有丰富的产品研发实战经验,目前专注于大数据解决方案以及微服务的研究与实施,参与《精通Spring 3.x》、《Spring就这么简单》等多本技术书籍的创作。


文建国

系统架构设计师、高级项目经理,精通Spring等优秀开源技术在企业中的应用,主要研究方向为云计算、大数据、业务基础平台、分布式等技术。曾参与中国电信ITSP 3.0技术架构规范的编写,有多个大型全国集中项目的架构和管理经验。目前致力于“智能制造”的人机一体化系统研发,希望通过物联网与互联网的融合提升生产效率和增强企业原有系统。热衷于开源技术布道,曾译有《Spring Data实战》、《大规模Java平台虚拟化与调优》等书籍。


目录

? 第1篇 基础篇
第1章 Spring概述 2
1.1 认识Spring 2
1.2 关于SpringSource 4
1.3 Spring带给我们什么 5
1.4 Spring体系结构 6
1.5 Spring对Java版本的要求 8
1.6 Spring 4.0新特性 8
1.6.1 全面支持Java 8.0 9
1.6.2 核心容器的增强 11
1.6.3 支持用Groovy定义Bean 12
1.6.4 Web的增强 12
1.6.5 支持WebSocket 12
1.6.6 测试的增强 13
1.6.7 其他 13
1.7 Spring子项目 13
1.8 如何获取Spring 15
1.9 小结 16
第2章 快速入门 17
2.1 实例概述 17
2.1.1 比Hello World更适用的实例 18
2.1.2 实例功能简介 18
2.2 环境准备 20
2.2.1 构建工具Maven 20
2.2.2 创建库表 22
2.2.3 建立工程 23
2.2.4 类包及Spring配置文件规划 28
2.3 持久层 29
2.3.1 建立领域对象 29
2.3.2 UserDao 30
2.3.3 LoginLogDao 33
2.3.4 在Spring中装配DAO 34
2.4 业务层 35
2.4.1 UserService 35
2.4.2 在Spring中装配Service 37
2.4.3 单元测试 38
2.5 展现层 40
2.5.1 配置Spring MVC框架 40
2.5.2 处理登录请求 42
2.5.3 JSP视图页面 44
2.6 运行Web应用 46
2.7 小结 48
第3章 Spring Boot 49
3.1 Spring Boot概览 49
3.1.1 Spring Boot发展背景 50
3.1.2 Spring Boot特点 50
3.1.3 Spring Boot启动器 50
3.2 快速入门 52
3.3 安装配置 54
3.3.1 基于Maven环境配置 54
3.3.2 基于Gradle环境配置 56
3.3.3 基于Spring Boot CLI环境
配置 57
3.3.4 代码包结构规划 58
3.4 持久层 59
3.4.1 初始化配置 59
3.4.2 UserDao 61
3.5 业务层 62
3.6 展现层 64
3.6.1 配置pom.xml依赖 64
3.6.2 配置Spring MVC框架 65
3.6.3 处理登录请求 65
3.7 运维支持 67
3.8 小结 70
? 第2篇 核心篇
第4章 IoC容器 72
4.1 IoC概述 72
4.1.1 通过实例理解IoC的概念 73
4.1.2 IoC的类型 75
4.1.3 通过容器完成依赖关系的
注入 77
4.2 相关Java基础知识 78
4.2.1 简单实例 78
4.2.2 类装载器ClassLoader 80
4.2.3 Java反射机制 83
4.3 资源访问利器 85
4.3.1 资源抽象接口 85
4.3.2 资源加载 88
4.4 BeanFactory和ApplicationContext 91
4.4.1 BeanFactory介绍 92
4.4.2 ApplicationContext介绍 94
4.4.3 父子容器 103
4.5 Bean的生命周期 103
4.5.1 BeanFactory中Bean的生命
周期 103
4.5.2 ApplicationContext中Bean
的生命周期 112
4.6 小结 114
第5章 在IoC容器中装配Bean 115
5.1 Spring配置概述 116
5.1.1 Spring容器高层视图 116
5.1.2 基于XML的配置 117
5.2 Bean基本配置 120
5.2.1 装配一个Bean 120
5.2.2 Bean的命名 120
5.3 依赖注入 121
5.3.1 属性注入 121
5.3.2 构造函数注入 124
5.3.3 工厂方法注入 128
5.3.4 选择注入方式的考量 130
5.4 注入参数详解 130
5.4.1 字面值 130
5.4.2 引用其他Bean 131
5.4.3 内部Bean 133
5.4.4 null值 133
5.4.5 级联属性 134
5.4.6 集合类型属性 134
5.4.7 简化配置方式 138
5.4.8 自动装配 141
5.5 方法注入 142
5.5.1 lookup方法注入 142
5.5.2 方法替换 143
5.6 <bean>之间的关系 144
5.6.1 继承 144
5.6.2 依赖 145
5.6.3 引用 146
5.7 整合多个配置文件 147
5.8 Bean作用域 148
5.8.1 singleton作用域 148
5.8.2 prototype作用域 149
5.8.3 与Web应用环境相关的Bean
作用域 150
5.8.4 作用域依赖问题 152
5.9 FactoryBean 153
5.10 基于注解的配置 155
5.10.1 使用注解定义Bean 155
5.10.2 扫描注解定义的Bean 156
5.10.3 自动装配Bean 157
5.10.4 Bean作用范围及生命过程
方法 162
5.11 基于Java类的配置 164
5.11.1 使用Java类提供Bean定义
信息 164
5.11.2 使用基于Java类的配置信息
启动Spring容器 167
5.12 基于Groovy DSL的配置 169
5.12.1 使用Groovy DSL提供Bean
定义信息 169
5.12.2 使用GenericGroovyApplication
Context启动Spring容器 171
5.13 通过编码方式动态添加Bean 172
5.13.1 通过DefaultListableBean
Factory 172
5.13.2 扩展自定义标签 173
5.14 不同配置方式比较 175
5.15 小结 177
第6章 Spring容器高级主题 178
6.1 Spring容器技术内幕 178
6.1.1 内部工作机制 179
6.1.2 BeanDefinition 182
6.1.3 InstantiationStrategy 183
6.1.4 BeanWrapper 183
6.2 属性编辑器 184
6.2.1 JavaBean的编辑器 185
6.2.2 Spring默认属性编辑器 188
6.2.3 自定义属性编辑器 189
6.3 使用外部属性文件 192
6.3.1 PropertyPlaceholderConfigurer
属性文件 192
6.3.2 使用加密的属性文件 195
6.3.3 属性文件自身的引用 198
6.4 引用Bean的属性值 199
6.5 国际化信息 201
6.5.1 基础知识 201
6.5.2 MessageSource 206
6.5.3 容器级的国际化信息资源 209
6.6 容器事件 210
6.6.1 Spring事件类结构 211
6.6.2 解构Spring事件体系的具体
实现 213
6.6.3 一个实例 214
6.7 小结 215
第7章 Spring AOP基础 216
7.1 AOP概述 216
7.1.1 AOP到底是什么 217
7.1.2 AOP术语 219
7.1.3 AOP的实现者 221
7.2 基础知识 222
7.2.1 带有横切逻辑的实例 222
7.2.2 JDK动态代理 224
7.2.3 CGLib动态代理 228
7.2.4 AOP联盟 229
7.2.5 代理知识小结 230
7.3 创建增强类 230
7.3.1 增强类型 230
7.3.2 前置增强 231
7.3.3 后置增强 235
7.3.4 环绕增强 236
7.3.5 异常抛出增强 237
7.3.6 引介增强 239
7.4 创建切面 243
7.4.1 切点类型 243
7.4.2 切面类型 244
7.4.3 静态普通方法名匹配切面 246
7.4.4 静态正则表达式方法匹配
切面 248
7.4.5 动态切面 251
7.4.6 流程切面 254
7.4.7 复合切点切面 256
7.4.8 引介切面 258
7.5 自动创建代理 259
7.5.1 实现类介绍 259
7.5.2 BeanNameAutoProxyCreator 260
7.5.3 DefaultAdvisorAutoProxy
Creator 261
7.5.4 AOP无法增强疑难问题
剖析 262
7.6 小结 267
第8章 基于@AspectJ和Schema的
AOP 269
8.1 Spring对AOP的支持 269
8.2 Java 5.0注解知识快速进阶 270
8.2.1 了解注解 270
8.2.2 一个简单的注解类 271
8.2.3 使用注解 272
8.2.4 访问注解 273
8.3 着手使用@AspectJ 274
8.3.1 使用前的准备 275
8.3.2 一个简单的例子 275
8.3.3 如何通过配置使用@AspectJ
切面 277
8.4 @AspectJ语法基础 278
8.4.1 切点表达式函数 278
8.4.2 在函数入参中使用通配符 279
8.4.3 逻辑运算符 280
8.4.4 不同增强类型 281
8.4.5 引介增强用法 282
8.5 切点函数详解 283
8.5.1 @annotation() 284
8.5.2 execution() 285
8.5.3 args()和@args() 287
8.5.4 within() 288
8.5.5 @within()和@target() 289
8.5.6 target()和this() 290
8.6 @AspectJ进阶 291
8.6.1 切点复合运算 292
8.6.2 命名切点 292
8.6.3 增强织入的顺序 294
8.6.4 访问连接点信息 294
8.6.5 绑定连接点方法入参 295
8.6.6 绑定代理对象 297
8.6.7 绑定类注解对象 298
8.6.8 绑定返回值 299
8.6.9 绑定抛出的异常 299
8.7 基于Schema配置切面 300
8.7.1 一个简单切面的配置 300
8.7.2 配置命名切点 302
8.7.3 各种增强类型的配置 303
8.7.4 绑定连接点信息 305
8.7.5 Advisor配置 306
8.8 混合切面类型 307
8.8.1 混合使用各种切面类型 308
8.8.2 各种切面类型总结 308
8.9 其他 309
8.9.1 JVM Class文件字节码转换
基础知识 309
8.9.2 使用LTW织入切面 311
8.10 小结 314
第9章 Spring SpEL 316
9.1 JVM动态语言 316
9.2 SpEL表达式概述 318
9.3 SpEL核心接口 319
9.3.1 EvaluationContext接口 320
9.3.2 SpEL编译器 321
9.4 SpEL基础表达式 323
9.4.1 文本字符解析 323
9.4.2 对象属性解析 323
9.4.3 数组、集合类型解析 324
9.4.4 方法解析 326
9.4.5 操作符解析 327
9.4.6 安全导航操作符 329
9.4.7 三元操作符 330
9.4.8 Elvis操作符 331
9.4.9 赋值、类型、构造器、变量 332
9.4.10 集合过滤 335
9.4.11 集合转换 335
9.5 在Spring中使用SpEL 336
9.5.1 基于XML的配置 336
9.5.2 基于注解的配置 337
9.6 小结 338
? 第3篇 数据篇
第10章 Spring对DAO的支持 340
10.1 Spring的DAO理念 340
10.2 统一的异常体系 341
10.2.1 Spring的DAO异常体系 341
10.2.2 JDBC的异常转换器 343
10.2.3 其他持久化技术的异常
转换器 344
10.3 统一数据访问模板 344
10.3.1 使用模板和回调机制 345
10.3.2 Spring为不同持久化技术
所提供的模板类 347
10.4 数据源 348
10.4.1 配置一个数据源 348
10.4.2 获取JNDI数据源 352
10.4.3 Spring的数据源实现类 353
10.5 小结 353
第11章 Spring的事务管理 355
11.1 数据库事务基础知识 355
11.1.1 何为数据库事务 356
11.1.2 数据并发的问题 357
11.1.3 数据库锁机制 359
11.1.4 事务隔离级别 360
11.1.5 JDBC对事务的支持 361
11.2 ThreadLocal基础知识 362
11.2.1 ThreadLocal是什么 363
11.2.2 ThreadLocal的接口方法 363
11.2.3 一个TheadLocal实例 364
11.2.4 与Thread同步机制的比较 366
11.2.5 Spring使用ThreadLocal解决
线程安全问题 366
11.3 Spring对事务管理的支持 368
11.3.1 事务管理关键抽象 369
11.3.2 Spring的事务管理器实现类 371
11.3.3 事务同步管理器 374
11.3.4 事务传播行为 375
11.4 编程式的事务管理 376
11.5 使用XML配置声明式事务 377
11.5.1 一个将被实施事务增强的
服务接口 379
11.5.2 使用原始的TransactionProxy
FactoryBean 379
11.5.3 基于aop/tx命名空间的配置 382
11.6 使用注解配置声明式事务 385
11.6.1 使用@Transactional注解 385
11.6.2 通过AspectJ LTW引入事务
切面 389
11.7 集成特定的应用服务器 390
11.7.1 BEA WebLogic 390
11.7.2 WebSphere 390
11.8 小结 390
第12章 Spring的事务管理难点剖析 392
12.1 DAO和事务管理的牵绊 393
12.1.1 JDBC访问数据库 393
12.1.2 Hibernate访问数据库 395
12.2 应用分层的迷惑 398
12.3 事务方法嵌套调用的迷茫 401
12.3.1 Spring事务传播机制回顾 401
12.3.2 相互嵌套的服务方法 402
12.4 多线程的困惑 405
12.4.1 Spring通过单实例化Bean
简化多线程问题 405
12.4.2 启动独立线程调用事务
方法 405
12.5 联合军种作战的混乱 408
12.5.1 Spring事务管理器的应对 408
12.5.2 Hibernate+Spring JDBC
混合框架的事务管理 408
12.6 特殊方法成漏网之鱼 412
12.6.1 哪些方法不能实施Spring
AOP事务 412
12.6.2 事务增强遗漏实例 413
12.7 数据连接泄露 416
12.7.1 底层连接资源的访问问题 416
12.7.2 Spring JDBC数据连接泄露 417
12.7.3 事务环境下通过DataSource
Utils获取数据连接 420
12.7.4 无事务环境下通过DataSource
Utils获取数据连接 422
12.7.5 JdbcTemplate如何做到对连接
泄露的免疫 424
12.7.6 使用TransactionAwareData
SourceProxy 425
12.7.7 其他数据访问技术的等价类 426
12.8 小结 426
第13章 使用Spring JDBC访问
数据库 428
13.1 使用Spring JDBC 428
13.1.1 JdbcTemplate小试牛刀 429
13.1.2 在DAO中使用Jdbc
Template 429
13.2 基本的数据操作 431
13.2.1 更改数据 431
13.2.2 返回数据库的表自增主键值 434
13.2.3 批量更改数据 436
13.2.4 查询数据 437
13.2.5 查询单值数据 440
13.2.6 调用存储过程 442
13.3 BLOB/CLOB类型数据的操作 444
13.3.1 如何获取本地数据连接 445
13.3.2 相关的操作接口 446
13.3.3 插入LOB类型的数据 448
13.3.4 以块数据方式读取LOB
数据 450
13.3.5 以流数据方式读取LOB
数据 451
13.4 自增键和行集 452
13.4.1 自增键的使用 452
13.4.2 如何规划主键方案 454
13.4.3 以行集返回数据 456
13.5 NamedParameterJdbcTemplate
模板类 456
13.6 小结 459
第14章 整合其他ORM框架 460
14.1 Spring整合ORM技术 460
14.2 在Spring中使用Hibernate 462
14.2.1 配置SessionFactory 462
14.2.2 使用HibernateTemplate 465
14.2.3 处理LOB类型的数据 469
14.2.4 添加Hibernate事件监听器 470
14.2.5 使用原生的Hibernate API 471
14.2.6 使用注解配置 472
14.2.7 事务处理 474
14.2.8 延迟加载问题 475
14.3 在Spring中使用MyBatis 476
14.3.1 配置SqlMapClient 476
14.3.2 在Spring中配置MyBatis 478
14.3.3 编写MyBatis的DAO 479
14.4 DAO层设计 482
14.4.1 DAO基类设计 482
14.4.2 查询接口方法设计 484
14.4.3 分页查询接口设计 486
14.5 小结 487
? 第4篇 应用篇
第15章 Spring Cache 490
15.1 缓存概述 490
15.1.1 缓存的概念 490
15.1.2 使用Spring Cache 493
15.2 掌握Spring Cache抽象 498
15.2.1 缓存注解 498
15.2.2 缓存管理器 504
15.2.3 使用SpEL表达式 506
15.2.4 基于XML的Cache声明 506
15.2.5 以编程方式初始化缓存 507
15.2.6 自定义缓存注解 509
15.3 配置Cache存储 509
15.3.1 EhCache 510
15.3.2 Guava 510
15.3.3 HazelCast 511
15.3.4 GemFire 511
15.3.5 JSR-107 Cache 511
15.4 实战经验 513
15.5 小结 514
第16章 任务调度和异步执行器 516
16.1 任务调度概述 516
16.2 Quartz快速进阶 517
16.2.1 Quartz基础结构 518
16.2.2 使用SimpleTrigger 520
16.2.3 使用CronTrigger 522
16.2.4 使用Calendar 526
16.2.5 任务调度信息存储 527
16.3 在Spring中使用Quartz 530
16.3.1 创建JobDetail 530
16.3.2 创建Trigger 533
16.3.3 创建Scheduler 534
16.4 在Spring中使用JDK Timer 536
16.4.1 Timer和TimerTask 536
16.4.2 Spring对Java Timer的支持 539
16.5 Spring对Java 5.0 Executor的
支持 540
16.5.1 了解Java 5.0的Executor 541
16.5.2 Spring对Executor所提供的
抽象 543
16.6 实际应用中的任务调度 544
16.6.1 如何产生任务 545
16.6.2 任务调度对应用程序集群的
影响 547
16.6.3 任务调度云 547
16.6.4 Web应用程序中调度器的
启动和关闭问题 549
16.7 小结 552
第17章 Spring MVC 553
17.1 Spring MVC体系概述 554
17.1.1 体系结构 554
17.1.2 配置DispatcherServlet 555
17.1.3 一个简单的实例 560
17.2 注解驱动的控制器 565
17.2.1 使用@RequestMapping
映射请求 565
17.2.2 请求处理方法签名 569
17.2.3 使用矩阵变量绑定参数 570
17.2.4 请求处理方法签名详细说明 571
17.2.5 使用HttpMessageConverter
<T> 575
17.2.6 使用@RestController和AsyncRestTemplate 584
17.2.7 处理模型数据 586
17.3 处理方法的数据绑定 591
17.3.1 数据绑定流程剖析 592
17.3.2 数据转换 592
17.3.3 数据格式化 598
17.3.4 数据校验 602
17.4 视图和视图解析器 611
17.4.1 认识视图 611
17.4.2 认识视图解析器 612
17.4.3 JSP和JSTL 613
17.4.4 模板视图 618
17.4.5 Excel 621
17.4.6 PDF 623
17.4.7 输出XML 625
17.4.8 输出JSON 626
17.4.9 使用XmlViewResolver 626
17.4.10 使用ResourceBundleView
Resolver 627
17.4.11 混合使用多种视图技术 628
17.5 本地化解析 630
17.5.1 本地化的概念 630
17.5.2 使用CookieLocaleResolver 631
17.5.3 使用SessionLocaleResolver 632
17.5.4 使用LocaleChange
Interceptor 632
17.6 文件上传 633
17.6.1 配置MultipartResolver 633
17.6.2 编写控制器和文件上传表单
页面 633
17.7 WebSocket支持 634
17.7.1 使用WebSocket 634
17.7.2 WebSocket的限制 638
17.8 杂项 639
17.8.1 静态资源处理 639
17.8.2 装配拦截器 643
17.8.3 异常处理 644
17.8.4 RequestContextHolder的
使用 646
17.9 小结 646
第18章 实战案例开发 648
18.1 论坛案例概述 648
18.1.1 论坛整体功能结构 648
18.1.2 论坛用例描述 649
18.1.3 主要功能流程描述 651
18.2 系统设计 655
18.2.1 技术框架选择 655
18.2.2 采用Maven构建项目 656
18.2.3 单元测试类包结构规划 657
18.2.4 系统架构图 658
18.2.5 PO类设计 658
18.2.6 持久层设计 659
18.2.7 服务层设计 660
18.2.8 Web层设计 661
18.2.9 数据库设计 662
18.3 开发前的准备 663
18.4 持久层开发 664
18.4.1 PO类 664
18.4.2 DAO基类 666
18.4.3 通过扩展基类定义DAO类 670
18.4.4 DAO Bean的装配 672
18.4.5 使用Hibernate二级缓存 673
18.5 对持久层进行测试 675
18.5.1 配置Unitils测试环境 675
18.5.2 准备测试数据库及测试
数据 676
18.5.3 编写DAO测试基类 677
18.5.4 编写BoardDao测试用例 678
18.6 服务层开发 680
18.6.1 UserService的开发 680
18.6.2 ForumService的开发 681
18.6.3 服务类Bean的装配 683
18.7 对服务层进行测试 684
18.7.1 编写Service测试基类 685
18.7.2 编写ForumService测试
用例 685
18.8 Web层开发 687
18.8.1 BaseController的基类 687
18.8.2 用户登录和注销 689
18.8.3 用户注册 691
18.8.4 论坛管理 692
18.8.5 论坛普通功能 694
18.8.6 分页显示论坛版块的主题
帖子 696
18.8.7 web.xml配置 700
18.8.8 Spring MVC配置 702
18.9 对Web层进行测试 703
18.9.1 编写Web测试基类 703
18.9.2 编写ForumManageController
测试用例 704
18.10 开发环境部署 705
18.11 项目配置实战经验 708
18.11.1 “传统的”Web项目属性
文件 708
18.11.2 如何规划便于部署的Web
项目属性文件 709
18.11.3 数据源的配置 710
18.12 小结 712
? 第5篇 提高篇
第19章 Spring OXM 714
19.1 认识XML解析技术 714
19.1.1 什么是XML 714
19.1.2 XML的处理技术 715
19.2 XML处理利器:XStream 717
19.2.1 XStream概述 717
19.2.2 快速入门 718
19.2.3 使用XStream别名 720
19.2.4 XStream转换器 721
19.2.5 XStream注解 723
19.2.6 流化对象 725
19.2.7 持久化API 726
19.2.8 额外功能:处理JSON 727
19.3 其他常见的O/X Mapping开源
项目 729
19.3.1 JAXB 729
19.3.2 Castor 733
19.3.3 JiBX 738
19.3.4 总结比较 741
19.4 与Spring OXM整合 742
19.4.1 Spring OXM概述 742
19.4.2 整合OXM实现者 744
19.4.3 如何在Spring中进行配置 744
19.4.4 Spring OXM简单实例 747
19.5 小结 749
第20章 实战型单元测试 750
20.1 单元测试概述 751
20.1.1 为什么需要单元测试 751
20.1.2 单元测试之误解 752
20.1.3 单元测试之困境 754
20.1.4 单元测试基本概念 755
20.2 TestNG快速进阶 757
20.2.1 TestNG概述 757
20.2.2 TestNG生命周期 758
20.2.3 使用TestNG 758
20.3 模拟利器Mockito 763
20.3.1 模拟测试概述 763
20.3.2 创建Mock对象 763

20.3.3 设定Mock对象的期望行为
及返回值 764
20.3.4 验证交互行为 766
20.4 测试整合之王Unitils 767
20.4.1 Unitils概述 767
20.4.2 集成Spring 770
20.4.3 集成Hibernate 773
20.4.4 集成DbUnit 774
20.4.5 自定义扩展模块 775
20.5 使用Unitils测试DAO层 776
20.5.1 数据库测试的难点 776
























20.5.2 扩展DbUnit用Excel准备
数据 776
20.5.3 测试实战 779
20.6 使用Unitils测试Service层 789
20.7 测试Web层 794
20.7.1 对LoginController进行单元
测试 794
20.7.2 使用Spring Servlet API模拟
对象 795
20.7.3 使用Spring RestTemplate
测试 797
20.8 小结 798

前言/序言

本书小序

Spring从2004年发布第一个版本以来,至今已有12载。12年刚好是一个生肖轮回,但在一日千里的计算机领域,12年基本上算是一个世纪了。都说“好花不常开,好景不常在”,但Spring这朵Java开源世界里芳香馥郁的奇葩不但没有零落成泥,反而满园春色历久弥艳,成为Java开发者无法回避的开源框架。

回顾Spring的光辉岁月,一路与时俱进,引领时代之潮流。总的来说,Spring主要经历了三次重大的版本升级:一为2006年从1.0升级到2.0,在Spring 2.0中新增了XML命名空间、AspectJ及Spring MVC等功能,此外,在Spring 2.5中还引入了注解驱动配置的支持,同时进一步完善了Spring MVC功能;二为2009年从2.5升级到3.0,新增了SpEL、OXM、REST、验证/格式化等功能,全面支持Java 5.0;三为2013年从3.0升级到4.0,新增了Groovy Bean配置、HTML 5/WebSocket支持等功能,全面支持Java 8.0,最低要求是Java 6.0。Spring始终坚持以小版本快速推进、每三年左右发布一个大版本的演化策略,既保证版本的平稳有序,又能紧跟技术发展的潮流。难能可贵的是,Spring即便发生了这么多次版本的升级,其整体框架依然是向下兼容的,在这一点上,Spring明显区别于Struts、Hibernate等框架的升级风格。

笔者在2007年曾编写了《精通Spring 2.x》,并在2012年出版了升级版本《精通Spring 3.x》。感谢读者朋友的厚爱垂青,其中《精通Spring 3.x》已经重印了11次,成为国内Spring领域的畅销书籍。2013年年底Spring 4.0就已经发布了,从那时起,出版社的朋友多次力促笔者进行版本的同步升级,笔者也希望能与时俱进地对原书进行更新,但囿于工作繁忙,一直未能付诸行动。直到2015年8月左右,才与林开雄、文建国着手筹划《精通Spring 4.x》的升级编写工作。林开雄和文建国是笔者多年的好朋友,二人都是拥有十多年工作经验的Java实战型技术高手,他们不但为人谦和、技术精湛,而且拥有丰厚的创作实力。林开雄早在2012年就参与了《精通Spring 3.x》的撰写工作,文建国则于2014年翻译了《Spring Data实战》。此外,林莉、何彩云、陈谋坤、项群、陈文炎、陈曦、康玉琳、蔡雪峰、康沿清、朱景、贤俊等也一起参与了本书的代码审查及测试工作,在此对大家的努力付出一并表示感谢!

本次改版,不但将全书内容同步更新到Spring 4.0,还对全书结构进行了多方面的优化和调整。移除了两个章节,分别是“JavaMail发送邮件”(考虑到比较简单)及“在Spring中开发Web Service”(考虑到Spring MVC开发REST WebService再合适不过了);新增了3个全新的章节,分别是“Spring Boot”、“Spring SpEL”及“Spring Cache”。

本书特点

? 揭示内幕,深入浅出:笔者对Spring的源码进行了彻底分析,深刻揭示了Spring框架的技术内幕,让读者知其然,更知其所以然。Spring中的许多设计经验、技巧、模式具有很高的借鉴性,在透彻学习Spring体系结构的同时,读者可以直接将这些方法借用到具体的应用开发中。

? 同步更新,与时俱进:虽然在2013年12月就发布Spring 4.0的第一个候选版本,后来又发布了多个RC版本,并最终于2015年8月发布了Spring 4.2的正式版本,但新功能的添加及旧功能的调整从来就没有停止过。本书基于Spring 4.2版本讲解,保证全书内容与时俱进。

? 突出重点,淡化边缘:虽然全书篇幅达800多页,但本书没有片面追求内容的面面俱到,相反,我们特别注意内容的剪裁和取舍;对于实用性强的知识点深入分析、深度挖掘,而对于不常用的知识点则点到为止,甚至不纳入本书的范围。举例来说,我们对使用Spring JDBC、Spring Cache及Spring MVC等实用性强的技术都进行了深入分析,而对如何集成EJB、JMX、JCA等不常用的功能完全不涉及,很好地做到了实用性和深入性的统一。

? 理论透彻,面向实践:本书在透彻分析原理、讲解技术知识点的同时,特别注意与实际应用的结合。笔者将自身丰富的实战经验糅合到全书的相关知识点中,很好地做到了知识讲解和实践经验的结合,让读者在掌握纯技术知识的同时能够对如何活用技术做到胸有成竹。如笔者在第16章讲解任务调度的内容时,专门辟出16.6节讲解实际应用中任务调度的使用经验;在第18章中讲述使用实战项目开发时,专门通过18.11节讲述了笔者在实际项目中所总结的项目配置文件及数据源的规划方案。此外,我们还适时提供了“实战经验”的插文,它们在不影响上下文连贯性的同时让读者学到了相关技术的实战经验。诸如此类的以实际应用为导向的内容贯穿全书,这是本书区别于其他书籍的特色之一。

? 代码简洁,图例丰富:全书代码在排版布局及内容剪裁上颇费心思,实例代码重点关注当前知识点涉及的内容,弱化边缘代码,并采用特殊的排版方式适时添加简明扼要的注释,方便程序代码的阅读和重点内容的把握。全书拥有大量精美的图表,这些图表很好地解构了上下文中的一些知识难点,大大提高了可读性,降低了理解的难度。

? 注重趣味,轻松阅读:由于技术书籍的严谨性、知识性特点,阅读技术书籍往往是枯燥乏味的,更遑论趣味性。笔者对此深有感触,为寻求一些突破,我们在全书大部分章节都精心设计了一个“轻松一刻”环节。它们和上下文内容存在某种程度的关联性,但其本身是一段趣味性的短文,以便在增强全书趣味性的同时还为读者提供了另一个思考问题的角度。

? 相关知识,一网打尽:Spring不但本身涉及众多Java技术,其集成的第三方技术本身也涵盖了丰富的知识。我们在介绍Spring相关技术时,都会简明扼要地讲解相关联的基础知识,其中包括Java的新知识和被集成技术的知识,而不是在完全脱离背景知识的情况下孤立讲解Spring的知识。

? 通力合作,倾力打造:本书从筹划到改版完成,历时近8个月。我们交叉审核,多次优化重构,为保证全书质量,多次向出版社申请延迟提交稿件,直到2016年6月才完成所有稿件。

本书结构

本书分为5篇。第1篇为基础篇,包括第1~3章,讲解Spring概述性知识,以便读者快速建立对Spring的整体认识,能够使用Spring快速开发一个简单的项目,而更多深入的知识则在后续篇章中展开。第2篇为核心篇,包括第4~9章,讲解Spring的IoC、AOP及SpEL的知识,这些知识是Spring的核心,也是Spring所有衍生服务及功能的基石。第3篇为数据篇,包括第10~14章,讲解Spring的各种数据访问技术及事务管理的内容,对事务管理的实现机制和各种疑难问题进行剖析。第4篇为应用篇,包括第15~18章,讲解数据缓存、任务调度、Web开发的内容,对于企业应用开发来说,数据缓存及任务调度是两个无法回避的问题,需要重点学习和掌握;此外,本篇还精心设计了一个实战案例,包含需求分析、数据库设计、项目开发、代码测试、应用部署的整体过程,让读者在项目的实战中整体串接Spring的知识点。第5篇为提高篇,包括第19章和第20章,讲解Spring OXM及单元测试的内容;全书工程代码放在本书配套网盘中,请读者下载网盘内容阅读,本书网盘下载地址如下。

百度云盘:http://pan.baidu.com/s/1boCl3d1。

下面简要介绍一下每章的内容。

第1章:对Spring框架进行了整体性的概述,可使读者快速建立起对Spring整体性的认识。

第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界。

第3章:Spring Boot的设计目的是用来简化新Spring应用的搭建和开发过程,本章通过实例向读者讲述了Spring Boot的使用技巧。

第4章:讲解了Spring IoC容器的知识,通过具体的实例详细地讲解了IoC概念;同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行了讲解。

第5章:讲解了如何在Spring配置文件中使用各种配置方式配置Bean的内容,并对各个配置项的意义进行了深入说明。

第6章:对Spring容器进行了解构,从内部探究Spring容器的体系结构和运行流程。此外,还对Spring容器一些高级主题进行了深入阐述。

第7章:从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的内核中,分析它的底层结构和具体实现。

第8章:对如何使用基于AspectJ配置AOP的知识进行了深入分析,包括使用XML Schema配置文件、使用注解进行配置等内容。

第9章:SpEL不仅仅是一个动态语言,而且Spring容器的很多配置都直接依赖于SpEL工作,因此掌握SpEL是掌握Spring配置的必修课程。

第10章:介绍了Spring所提供的DAO封装层,包括Spring DAO的异常体系、数据访问模板等内容。

第11章:声明式事务配置是Spring的一项重要功能,本章介绍了Spring事务管理的工作机制,以及通过XML、注解等方式进行事务管理配置等内容。

第12章:对实际应用中Spring事务管理的各种疑难问题进行了透彻剖析,让读者对Spring事务管理不再有云遮雾罩的感觉。

第13章:讲解了如何使用Spring JDBC进行数据访问操作,还重点讲述了LOB字段处理、主键的产生和获取等难点知识。

第14章:讲解了如何在Spring中集成Hibernate、MyBatis等数据访问框架,同时,读者还将学到ORM框架的混用和DAO层设计的知识。

第15章:数



《银河系漫游指南》:一部关于生命、宇宙及一切的终极答案的幽默史诗 想象一下,有一天,地球,一个毫不起眼的蓝色星球,被一支庞大的外星种族——沃贡人——夷为平地,只为修建一条超空间快速通道。而我们故事的主人公,一个名叫亚瑟·邓特的普通地球人,在朋友福特·普里弗特的帮助下,侥幸逃出生天。福特并非地球人,而是一位在地球上“失业”的研究员,他来自一个偏僻的名为贝塔·雷伊·贝塔的小行星。 就这样,亚瑟·邓特,一个刚刚经历了家园被毁、对一切感到茫然的男人,被迫踏上了一段他从未想象过的宇宙冒险。他的旅程,并非是为了拯救世界,也不是为了寻找失落的宝藏,而是充满了荒诞、幽默,以及对生命、宇宙和一切事物的哲学思考。 一、 荒诞的开端:一个普通人的宇宙漂流 亚瑟·邓特的遭遇,是《银河系漫游指南》最鲜明的特色之一:以一种戏谑而又深刻的方式,揭示了宇宙的冷漠与人类的渺小。地球的毁灭,不是什么惊天动地的危机,只是一个巨大的官僚体系为了效率而做出的“正常”操作。这种反差,本身就充满了黑色幽默。 被沃贡人粗暴地从地球上“解救”出来后,亚瑟和福特加入了“宇宙飞船,红色惊奇号”,这是一艘由扎福德·毕博布鲁克斯(Zaphod Beeblebrox)偷窃而来、拥有“无限不可能性引擎”的飞船。扎福德,银河系总统,一个两头三臂、自大狂妄的家伙,他的出现,为故事注入了更多混乱和乐趣。他的目标,据他自己所说,是去寻找传说中的“玛格拉特星球”(Magrathea),一个曾经为宇宙中的富人建造行星的公司。 二、 宇宙的奇观与奇葩:令人捧腹的角色与设定 在红色惊奇号上,亚瑟遇到了更多形形色色的人物: 特丽丽恩·麦克米兰(Trillian McMillan),原名塔普丽思·梅(Tricia McMillan),是一位来自地球的天文学家,也是亚瑟在一次派对上遇到的女性。她跟随扎福德离开了地球,成为了亚瑟宇宙漂流的另一位意外的旅伴。她聪明、独立,常常成为这个混乱团队中的理智担当。 马文(Marvin),一个拥有“天才级”智能但患有严重抑郁症的机器人。他总是抱怨、叹息,对宇宙的无聊和人类的愚蠢感到厌倦,但他的悲观论调却常常带来意想不到的笑料。他的存在,是对智能与情感关系的深刻反思,同时也充满了令人心酸的幽默。 《银河系漫游指南》的魅力,很大程度上在于其天马行空的想象力。作者道格拉斯·亚当斯(Douglas Adams)创造了一个充满奇思妙想的宇宙,其中的设定常常颠覆我们的认知: “宇宙,宇宙,宇宙,宇宙,宇宙”:沃贡人使用的语言,一种令人抓狂的语言,他们的诗歌更是被誉为“宇宙中最糟糕的诗歌”,能让听到的人痛苦不堪。 “巴贝尔鱼”(Babel Fish):一种生活在耳膜内的鱼,可以翻译任何语言,只要将其塞入耳朵,就能听懂所有宇宙生物的语言。这是解决跨语言沟通难题的绝妙设定。 “超空间快速通道”:一种能够瞬间跨越遥远距离的技术,但建设过程却不惜摧毁行星。这反映了人类(或外星人)为了便利而可能付出的代价,以及科技进步带来的伦理困境。 “银河系漫游指南”:正如书名所示,这是一本电子书,提供了关于银河系各个星球、种族、习俗的详尽(但常常充满偏见和错误)的指南。它以“不要恐慌”(Don't Panic)作为封面语,成为了无数漫游者的口头禅,也象征着在面对未知宇宙时的冷静与幽默。 三、 终极问题的追寻:生命、宇宙及一切 亚瑟一行人的旅程,最终导向了关于“生命、宇宙及一切”的终极答案。他们来到了传说中的玛格拉特星球,那里居住着一群能够建造星球的“设计者”。这些设计者,为了解答“生命、宇宙及一切”的终极问题,建造了一台名为“深思”(Deep Thought)的超级计算机。 “深思”经过长达七百五十万年的计算,终于得出了答案: “42”。 这个答案,不仅令人费解,更引发了无限的嘲讽。750万年的计算,换来一个数字?这正是道格拉斯·亚当斯对人类理性、逻辑以及我们对终极真理的执着追求的戏谑。答案是“42”,但没有人知道问题的真正含义。这就如同我们对生命的意义,我们拥有许多理论和哲学,但最终的答案却可能简单到让我们难以置信,或者根本就是我们提问本身就存在问题。 为了找到“生命、宇宙及一切”这个终极问题的真正含义,他们被告知需要建造另一台更强大的计算机——地球。然而,在“深思”完成计算后的第五分钟,地球就被沃贡人摧毁了。这个巧合,再次增添了故事的荒诞感,也暗示着,或许我们一直在寻找一个错误的答案,或者,我们根本就不应该试图用一个简单的数字来概括生命的复杂性。 四、 哲学思考与幽默的融合 《银河系漫游指南》并非仅仅是一部纯粹的科幻喜剧,它更是一部充满哲学深度的作品。道格拉斯·亚当斯通过亚瑟·邓特这个普通人的视角,探讨了许多深刻的问题: 人类的渺小与宇宙的浩瀚:在广袤无垠的宇宙面前,人类的生存和文明显得微不足道,地球的毁灭也只是一个微不足道的事件。 官僚主义的荒谬:沃贡人的行为,是对僵化、无情、效率至上的官僚主义的辛辣讽刺。 科技的双刃剑:科技带来了便利,也可能带来毁灭。无限不可能性引擎固然神奇,但建造超空间通道却可以轻易摧毁一颗星球。 生命的意义:当终极答案是“42”时,我们不得不重新审视生命的意义,或许,生命的意义并不在于一个确定的答案,而在于过程本身,在于体验,在于我们如何去爱、去感受、去创造。 理性与情感:马文的抑郁,特丽丽恩的独立,扎福德的自恋,都在以不同的方式展现着智能与情感的复杂关系。 道格拉斯·亚当斯的写作风格独树一帜,他擅长运用冷幽默、讽刺、反语以及无厘头的想象力,将严肃的哲学思考融入到令人捧腹的故事情节中。他笔下的文字,充满了智慧的光芒,常常能在不经意间触动读者内心深处的思考。 五、 传承与影响 《银河系漫游指南》系列小说,从最初的广播剧改编,发展成为一系列五部(后有第六部)的畅销小说,并被改编成电影、电视剧、漫画、游戏等多种形式,在全球范围内产生了巨大的文化影响。它不仅是一部科幻小说,更成为了一种文化现象,其独特的幽默风格和哲学思考,影响了无数的读者和创作者。 “不要恐慌”(Don't Panic)的口号,已经成为了一种生活态度,鼓励人们在面对生活的混乱和不确定性时,保持冷静,拥抱幽默,并以乐观的态度去探索未知。 总而言之,《银河系漫游指南》是一部集科幻、幽默、哲学于一体的杰作。它以一种前所未有的方式,带领读者踏上一段充满惊喜和启发的宇宙之旅,让我们在笑声中反思生命,在荒诞中寻找真理。它告诉你,即使世界末日降临,我们依然可以带着微笑,去漫游那浩瀚的银河。

用户评价

评分

我一直认为,一本优秀的技术书籍,不仅仅是知识的搬运工,更应该是一位引路人。而《精通Spring 4.x ――企业应用开发实战》这本书,从我的角度来看,正有这样的潜力。《精通》这个词,对我这样希望在Spring领域有所建树的开发者来说,无疑是一个巨大的诱惑。我特别希望这本书能够带领我深入理解Spring框架的各个模块,比如Spring Data JPA的配置和使用,Spring Security的权限管理体系,以及Spring Batch的批处理应用。在实际的企业级开发中,我们经常会遇到复杂的数据处理、第三方接口集成、以及分布式系统的构建,这些都需要Spring提供强大的支持。因此,我对书中关于Spring与大数据技术集成、消息队列集成、以及分布式事务处理的解决方案有着浓厚的兴趣。我希望这本书能够提供清晰的架构设计思路和实用的代码示例,帮助我构建出更加健壮、高效、可扩展的企业级应用。

评分

这本书的标题《精通Spring 4.x ――企业应用开发实战》让我眼前一亮。我在实际项目中接触Spring已经有几年了,但总感觉自己对Spring的理解还停留在“会用”的阶段,离“精通”还有很远的距离。尤其是对于Spring一些核心概念的深层原理,比如Spring的事件驱动模型,或者Spring如何处理并发请求的内部机制,我始终觉得模糊不清。我非常期待这本书能够在这方面提供详尽的解释。另外,在企业级应用开发中,除了Spring Core,像Spring Boot、Spring Cloud这些现代化的开发框架和微服务架构,也是我迫切需要深入学习的。虽然书名是Spring 4.x,但我希望它能提供一些基础概念的扎实讲解,让我能够更容易地迁移到更新的版本和生态系统中。我还需要书中能够包含一些关于如何利用Spring进行单元测试、集成测试的实用技巧,以及如何处理Spring应用的部署和监控。

评分

这本书拿到手的时候,就被它厚重的体积和封面上“精通”二字所吸引。我是一名有几年Java开发经验的程序员,一直以来都在使用Spring框架,但总觉得自己在某些深层次的理解上有所欠缺,遇到一些复杂场景时,会感到力不从心。市场上Spring的书籍琳琅满目,但很多都过于浅显,或者只是对API的罗列,很难真正带你深入理解Spring的“道”。我尤其看重的是,它能否解释清楚Spring IOC(控制反转)和AOP(面向切面编程)这两个核心概念背后的设计哲学,以及它们是如何在企业级应用中发挥作用的。对于Spring的事务管理、安全框架、以及集成第三方服务的经验分享,也是我非常期待的部分。毕竟,在实际工作中,这些才是保证应用健壮性和可维护性的关键。我希望这本书能像一位经验丰富的导师,不仅教我“怎么做”,更能告诉我“为什么这么做”,让我能够举一反三,在面对新的问题时,也能找到Spring的解决之道。我还需要它能提供一些实际的企业级项目案例,展示Spring如何在复杂的业务逻辑、高并发场景下进行优化和扩展,这对我提升实战能力至关重要。

评分

说实话,作为一名技术书籍的重度读者,我见过太多“快餐式”的教学内容,往往是看完后知识点零散,无法形成体系。所以我对《精通Spring 4.x ――企业应用开发实战》这本书抱有非常高的期望,希望它能够在我现有的Spring基础上,为我构建一个更加坚实和深入的知识体系。我特别关注书中对于Spring组件的生命周期、bean的装载过程、以及各种配置方式的深入剖析。例如,XML配置、注解配置、JavaConfig之间各自的优劣势,以及在不同场景下如何选择。此外,对于Spring MVC的请求处理流程、数据绑定、视图解析等细节,我也希望能够得到详尽的阐述。在企业级开发中,性能优化是绕不开的话题,书中关于Spring的性能调优策略、缓存集成、以及如何利用Spring管理资源(如数据库连接池)的实践经验,对我来说价值巨大。我更希望这本书能引导我理解Spring背后的设计模式和思想,而不是停留在API的使用层面。

评分

作为一名对Java EE技术栈情有独钟的开发者,Spring框架自然是我日常开发中不可或缺的一部分。然而,随着项目经验的积累,我越来越感觉到,仅仅停留在Spring基础API的使用层面,是无法满足企业级开发的复杂需求的。《精通Spring 4.x ――企业应用开发实战》这本书的出现,恰好能够填补我在这方面的知识空白。我尤其期待书中能够深入讲解Spring的事务传播机制、隔离级别,以及在不同场景下如何选择最合适的事务管理策略。此外,对于Spring Cloud在微服务架构中的应用,比如服务注册与发现、配置中心、熔断降级等,如果书中能够有相关的介绍和实践指导,那将对我意义重大。我还需要书中能够涵盖一些性能优化和安全加固的实战案例,帮助我构建出更具竞争力的企业级应用。我希望这本书能够让我看到Spring的“全貌”,而不仅仅是其中的某个“点”。

评分

京东物流快速,价廉物美太棒了

评分

还没看,以后看看先。看了下目录,有一些功能会串到源码解析的,对于深入理解有帮助

评分

这真的挺好 我就是来刷评论挣豆豆的

评分

京东物流快速,价廉物美太棒了

评分

全而广

评分

还没看,以后看看先。看了下目录,有一些功能会串到源码解析的,对于深入理解有帮助

评分

快递速度很快,值得赞一个!

评分

质量很好性价比很高,很喜欢

评分

一定要看完呀

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.idnshop.cc All Rights Reserved. 静思书屋 版权所有