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

精通Spring 4.x ――企业应用开发实战
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2017-01
版次: 1
ISBN: 9787121304439
定价: 128.00
装帧: 平装
开本: 16开
纸张: 胶版纸
页数: 820页
字数: 1312千字
正文语种: 简体中文
380人买过
  • 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 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
查看详情
12
相关图书 / 更多
精通Spring 4.x ――企业应用开发实战
精通 Power Query
(加拿大)肯·普尔斯
精通Spring 4.x ――企业应用开发实战
精通套期保值
李录林 著
精通Spring 4.x ――企业应用开发实战
精通STM32F4(HAL库版)(上)
刘军 凌柱宁 徐伟健 江荧
精通Spring 4.x ――企业应用开发实战
精通FrontPage XP(中文版)
中国IT培训工程编委会 编
精通Spring 4.x ――企业应用开发实战
精通咬合重建——解读牙列不齐、牙周病、多牙缺失
吴松涛 周茂强 译;[日]上田 秀朗
精通Spring 4.x ――企业应用开发实战
精通Veeam Backup & Replication(原书第2版)
克里斯·奇尔德霍森(Chris Childerhose)
精通Spring 4.x ――企业应用开发实战
精通Shiny(Mastering Shiny)
Hadley Wickham
精通Spring 4.x ――企业应用开发实战
精通区块链开发技术(第2版)
[美]伊姆兰·巴希尔 著;王烈征 译
精通Spring 4.x ――企业应用开发实战
精通Apache Pulsar:可伸缩云原生事件流实践
[美]Jowanza Joseph(乔万扎·约瑟夫
精通Spring 4.x ――企业应用开发实战
精通机器学习算法
[意]朱塞佩·博纳科尔索(Giuseppe Bonaccorso)
精通Spring 4.x ――企业应用开发实战
精通嵌入式Linux编程
[美]弗兰克·瓦斯奎兹 著;陈会翔 译
精通Spring 4.x ――企业应用开发实战
精通Transformer:从零开始构建最先进的NLP模型
[伊朗]梅萨姆·阿斯加里-切纳格卢 著;江红 余青松 余靖 译;[土耳其]萨瓦斯·伊尔蒂利姆
您可能感兴趣 / 更多
精通Spring 4.x ――企业应用开发实战
Spring 3.0就这么简单
陈雄华、林开雄 著
精通Spring 4.x ――企业应用开发实战
Spring 3.x企业应用开发实战
陈雄华、林开雄 著
精通Spring 4.x ――企业应用开发实战
精通Spring 2.x:企业应用开发详解
陈雄华 著
精通Spring 4.x ――企业应用开发实战
精通JBuilder 2005
陈雄华