编辑推荐

适读人群:SSM、Java、Redis

涵盖JavaEE主流框架技术SSM+Redis,快速上手开发

  用SpringMVC整合MyBatis框架技术

  用Spring整合Redis在Java互联网技术上的应用

  通过秒杀、抢红包讲解互联网高并发业务

内容简介

  随着移动互联网的兴起,以Java技术为后台的互联网技术占据了市场的主导地位,而在Java互联网后台开发中,SSM框架(Spring+SpringMVC+MyBatis)成为了主要架构,《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》以此为焦点从入门到实际工作要求讲述了SSM框架的技术应用;与此同时,为了提高系统性能,NoSQL(尤其是Redis)在互联网系统中已经广泛使用,为了适应这个变化,《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》通过Spring讲解了有关Redis的技术应用,这样更加贴近实际学习和工作的需要。
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》主要分为6个部分,第1部分对Java互联网的框架和主要涉及的模式做初步简介;第2部分讲述MyBatis技术;第3部分讲述Spring基础(包括IoC、AOP和数据库应用),重点讲解Spring数据库事务应用,以满足互联网企业的应用要求;第4部分,讲述SpringMVC框架;第5部分,通过Spring技术的应用,讲解Redis技术;第6部分,讲解SSM+Redis实践应用,通过互联网高并发如抢票、抢红包等场景,使用全注解的方式讲解SSM框架的整合,以及高并发与锁的应用和系统性能优化。
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》结合企业的实际需求,从原理到实践全面讲解SSM+Redis技术应用,无论你是Java程序员、SSM应用和研究人员,还是Redis应用人员、互联网开发人员,都可以从《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》中收获知识。

作者简介

  杨开振,拥有十余年一线Java开发工作经验,热衷于Java互联网技术方向研究,目前从事Java互联网技术在线教育,著有畅销书《深入浅出MyBatis技术原理与实战》。

  周吉文,高级工程师,曾获广东省科技进步一等奖,曾任国家“863”计划项目软件组组长,担任珠海市第二人民医院信息部主任多年,有丰富的项目实施和管理经验。

  梁华辉,资深Java开发专家,有丰富的企业级应用及Web项目的开发经验。对软件设计模式和代码整洁方面有深入理解,对Spring、Hibernate等主流开源框架有深入研究。

  谭茂华,资深Java开发专家,拥有十余年供应链管理、金融、物联网等行业大型系统软件开发经验。热衷于软件架构、软件研发过程控制、Java开源技术(尤其是Spring体系技术)的研究。

精彩书评

  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》从基础理论讲起,菜鸟可以由此登堂入室,功力再上一层楼。结合源码分析,深入浅出,轻松一窥底层原理,适合大侠修炼内功。书中案例非常切合互联网应用的实际,对架构设计有很好的借鉴和参考意义。

  ——前华为架构师、腾讯高级工程师代继红



 高速数据流和高并发访问是目前互联网应用数据处理层面临的严峻挑战。《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》对互联网时代业界流行的“SSM+Redis”的Java互联网技术进行了详细介绍,给需要搭建高效互联网应用的企业或个人提供了应对挑战的利器。《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》内容由浅入深,逻辑清晰,代码丰富,可操作性强,是一本既适合新手入门又适合高手修炼的技术宝典。
  ——广西大学教授许嘉



  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》从基础理论到实际应用,全面深入地介绍了互联应用开发的流行技术,熟读《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》必能成为互联网应用开发的行家里手。


  ——深圳某知名互联网金融公司高级Java软件工程师姚润泉


  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》从实用的角度出发,详细阐述了一个互联网系统框架搭建的过程。针对Spring、SpringMVC、MyBatis这三大主流框架的机制原理、环境搭建、系统开发的方方面面都有详细描述。针对目前比较流行的Redis缓存及NoSql数据库进行了详细介绍,这是《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的亮点。


  ——安润普科技有限公司软件研发副总监兼云平台架构师叶剑飞


  通过多年对Web后端架构的理解和实践经验,作者从框架底层原理展开,结合示意图、示意表、程序实例片段,深入剖析了SSM框架,同时对SSM框架和主流技术的结合进行了实例介绍。《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》适应的读者层次很广,既适合初学者入门,也适合老手深造。
  ——泰坦软件系统有限公司项目总监聂凯如

 

目录

第1部分入门和技术基础

第1章认识SSM框架和Redis2

1.1Spring框架2

1.2MyBatis简介6

1.3SpringMVC简介11

1.4最流行的NoSQL——Redis12

1.5SSM+Redis结构框图及概述13

第2章Java设计模式15

2.1Java反射技术15

2.2动态代理模式和责任链模式19

2.3观察者(Observer)模式30

2.4工厂模式和抽象工厂模式35

2.5建造者(Builder)模式38

2.6总结41

第2部分互联网持久框架——MyBatis

第3章认识MyBatis核心组件44

3.1持久层的概念和MyBatis的特点44

3.2准备MyBatis环境45

3.3MyBatis的核心组件46

3.4SqlSessionFactory(工厂接口)47

3.5SqlSession50

3.6映射器51

3.7生命周期55

3.8实例57

第4章MyBatis配置63

4.1概述63

4.2properties属性64

4.3settings设置66

4.4typeAliases别名69

4.5typeHandler类型转换器72

4.6ObjectFactory(对象工厂)87

4.7插件89

4.8environments(运行环境)89

4.9databaseIdProvider数据库厂商标识95

4.10引入映射器的方法99

第5章映射器102

5.1概述102

5.2select元素——查询语句103

5.3insert元素——插入语句112

5.4update元素和delete元素114

5.5sql元素115

5.6参数116

5.7resultMap元素118

5.8级联120

5.9缓存143

5.10存储过程149

第6章动态SQL155

6.1概述155

6.2if元素156

6.3choose、when、otherwise元素156

6.4trim、where、set元素157

6.5foreach元素159

6.6用test的属性判断字符串159

6.7bind元素160

第7章MyBatis的解析和运行原理162

7.1构建SqlSessionFactory过程163

7.2SqlSession运行过程168

第8章插件181

8.1插件接口181

8.2插件的初始化182

8.3插件的代理和反射设计183

8.4常用的工具类——MetaObject186

8.5插件开发过程和实例187

8.6总结205

第3部分Spring基础

第9章SpringIoC的概念208

9.1Spring的概述208

9.2SpringIoC概述210

9.3SpringIoC容器215

9.4小结223

第10章装配SpringBean224

10.1依赖注入的3种方式224

10.2装配Bean概述227

10.3通过XML配置装配Bean228

10.4通过注解装配Bean235

10.5装配的混合使用246

10.6使用Profile249

10.7加载属性(properties)文件254

10.8条件化装配Bean258

10.9Bean的作用域259

10.10使用Spring表达式(SpringEL)261

第11章面向切面编程267

11.1一个简单的约定游戏267

11.2SpringAOP的基本概念274

11.3使用@AspectJ注解开发SpringAOP280

11.4使用XML配置开发SpringAOP293

11.5经典SpringAOP应用程序299

11.6多个切面301

11.7小结306

第12章Spring和数据库编程307

12.1传统的JDBC代码的弊端307

12.2配置数据库资源309

12.3JDBC代码失控的解决方案——jdbcTemplate311

12.4MyBatis-Spring项目317

第13章深入Spring数据库事务管理330

13.1Spring数据库事务管理器的设计331

13.2编程式事务336

13.3声明式事务337

13.4数据库的相关知识343

13.5选择隔离级别和传播行为347

13.6在Spring+MyBatis组合中使用事务350

13.7@Transactional的自调用失效问题358

13.8典型错误用法的剖析363

第4部分SpringMVC框架

第14章SpringMVC的初始化和流程370

14.1MVC设计概述370

14.2SpringMVC初始化378

14.3SpringMVC开发流程详解389

第15章深入SpringMVC组件开发399

15.1控制器接收各类请求参数399

15.2重定向409

15.3保存并获取属性参数412

15.4拦截器417

15.5验证表单424

15.6数据模型432

15.7视图和视图解析器434

15.8上传文件441

第16章SpringMVC高级应用449

16.1SpringMVC的数据转换和格式化449

16.2为控制器添加通知466

16.3处理异常470

16.4国际化471

第5部分Redis应用

第17章Redis概述480

17.1Redis在JavaWeb中的应用481

17.2Redis基本安装和使用483

17.3Redis的JavaAPI486

17.4简介Redis的6种数据类型494

17.5Redis和数据库的异同495

第18章Redis数据结构常用命令496

18.1Redis数据结构——字符串497

18.2Redis数据结构——哈希502

18.3Redis数据结构——链表(linked-list)506

18.4Redis数据结构——集合513

18.5Redis数据结构——有序集合516

18.6基数——HyperLogLog522

第19章Redis的一些常用技术525

19.1Redis的基础事务526

19.2探索Redis事务回滚528

19.3使用watch命令监控事务529

19.4流水线(pipelined)532

19.5发布订阅534

19.6超时命令538

19.7使用Lua语言540

19.8小结547

第20章Redis配置548

20.1Redis基础配置文件548

20.2Redis备份(持久化)549

20.3Redis内存回收策略552

20.4复制553

20.5哨兵(Sentinel)模式556

第21章Spring缓存机制和Redis的结合565

21.1Redis和数据库的结合565

21.2使用Spring缓存机制整合Redis568

21.3RedisTemplate的实例582

第6部分SSM框架+Redis实践应用

第22章高并发业务586

22.1互联系统应用架构基础分析586

22.2高并发系统的分析和设计588

22.3搭建抢红包开发环境和超发现象595

22.4悲观锁611

22.5乐观锁614

22.6使用Redis实现抢红包621

22.7各类方式的优缺点631

附录A数据库表模型633

附录BDispatcherServlet流程源码分析637

附录CJSTL常用标签648

附录Dspringdataredis项目分析660

前言/序言

  随着移动互联网的兴起以及手机和平板电脑的普及,Java开发方向发生了很大变化,渐渐从管理系统走向了互联网系统。互联网系统的要求是大数据、高并发、高响应,而非管理系统的少数据、低并发和缓慢响应。为顺应技术发展趋势,2016年春季笔者写了一本关于MyBatis的著作《深入浅出MyBatis技术原理与实战》,作为国内第一本关于MyBatis技术的著作,该书受到了业内的广泛肯定。与此同时,电子工业出版社编辑汪达文给了我一个很好的建议,她建议写一本Java合集,这更贴近开发工作的实际需求。在移动互联网兴起的时代,Spring+SpringMVC+MyBatis(SSM)的Java组合已经成为时代的主流,伴随着NoSQL(缓存)的广泛应用,Redis成了主要的NoSQL工具,这些都是当今移动互联网最为流行的技术,于是笔者打算竭尽所能写一本SSM+Redis的合集,这就是《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》创作的缘起。
  移动互联网的新要求
  高并发:举个例子,大公司企业ERP应用,有1万名员工使用,同时在线的用户可能只有数百人,而操作一个业务的同一个数据的可能只有几个人,其系统一般不会存在高并发的压力,使用传统程序和数据库完全可以应付。在互联网中一件热门的商品,比如新版小米手机,可能刚一上市就有成千上万的请求到达服务器,要求瞬间执行数以万计的数据操作,对性能要求高,操作不当容易造成网站瘫痪,引发网站的生存危机。
  高响应:企业管理系统可以缓慢处理一些业务,而在高并发的互联网系统中,却不可以,按照互联网的要求一般以5秒为上限,超过5秒后响应,用户体验不好,从而影响用户忠诚度,而这些往往需要在高并发和大数据量的场景下实现。
  数据一致性:由于高并发,多个线程对同一数据同时访问,需要保证数据的一致性,比如电商网站的金额、商品库存不能出错,还要保证其性能不能太差,这是在管理系统中不会出现的场景。
  技术复杂化:在互联网中流行许多新技术,比如常见的NoSQL(Redis、MongoDB),又如MQ、RPC框架、ZooKeeper、大数据、分布式等技术。
  为什么选择SSM框架+Redis的开发模式
  首先,Struts2框架和Spring结合,多年来改变不了臃肿的老毛病,更为严重的是近年来多次出现的漏洞问题,使得其名声和使用率大降。这个时候SpringMVC框架成了新一代MVC框架的主流。它原生于Spring框架,可以无缝对接Spring的核心技术。与Struts不同,它的流程模块化,没有那么多臃肿的类,所以互联网应用的框架大部分使用的是SpringMVC。
  其次,目前企业的Java应用中,Spring框架是必须的,Spring的核心是IoC(控制反转),它是一个大容器,方便组装和管理各类系统内外部资源,同时支持AOP(面向切面编程),这是对面向对象的补充,目前广泛用于日志和数据库事务控制,减少了大量的重复代码,使得程序更为清晰。因为Spring可以使模块解耦,控制对象之间的协作,所以Spring框架是目前Java最为流行的框架,几乎没有之一。
  最后,对于Hibernate而言,笔者感慨最多,在需要存储过程或者复杂SQL时,它的映射关系几乎完全用不上,所有的问题都需要自己敲代码处理。作为全映射的框架,它的致命缺点是没有办法完全掌控数据库的SQL,而优化SQL是高并发、高响应系统的必然要求,这是互联网系统的普遍特性,所以Hibernate在互联网系统中被排除了。而另一个持久层框架MyBatis,它需要编写SQL、提供映射规则,不过它加入了动态SQL、自动映射、接口编程等功能使得它简单易用,同时支持SQL优化、动态绑定,并满足高并发和高响应的要求,所以它成为最流行的Java互联网持久框架。
  NoSQL的成功在于,首先它是基于内存的,也就是数据放在内存中,而不是像数据库那样把数据放在磁盘上,而内存的读取速度是磁盘读取速度的几十倍到上百倍,所以NoSQL工具的速度远比数据库读取速度要快得多,满足了高响应的要求。即使NoSQL将数据放在磁盘中,它也是一种半结构化的数据格式,读取到解析的复杂度远比数据库要简单,这是因为数据库存储的是经过结构化、多范式等有复杂规则的数据,还原为内存结构的速度较慢。NoSQL在很大程度上满足了高并发、快速读/写和响应的要求,所以它也是Java互联网系统的利器。于是两种NoSQL的工具Redis和MongoDB流行起来,尤其是Redis已经成为了主要的NoSQL工具,《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》会详细介绍它的常用方法。
  基于以上原因,Spring+SpringMVC+MyBatis已经成了Java互联网时代的主流框架,而Redis缓存已经成了主流的NoSQL技术,笔者愿意将自己所掌握的知识分享给大家,为目前奋斗在SSM和Redis战线上的同行们奉献一本有价值的参考书,给一些准备进入这个行业的新手一定的帮助和指导。
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的特点
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》具备五大特点。
  实用性:《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》内容来自于笔者多年互联网实践开发工作,理论结合实际应用。
  理论性:突出基础理念,结合设计模式阐述框架的实现原理和应用理念,让读者知其然也知其所以然。
  与时俱进:介绍最新框架技术,与当前互联网企业保持同步,比如全注解搭建SSM框架和Redis的应用,使得读者能够把最新技术应用到实际的工作中去。
  突出热点和重点:着重介绍MyBatis实践应用,Spring数据库及事务应用,使用Spring介绍Redis实践应用、高并发和锁等互联网热门技术的热点和重点。
  性能要求突出:这是移动互联网的要求,因为互联网面对大数据和高并发,体现互联网企业真实需要。
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的内容安排
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》基于一线企业的实际应用要求,介绍了Java互联网最流行的框架技术,内容全面,以实际应用为导向,取舍明确,尤其对于技术的重点、难点解释得深入浅出,案例丰富,具体来说《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》在体例上分为六大部分。
  第1部分,首先讲解基础,让读者对SSM框架里的每一门技术的主要作用有所了解。然后介绍SSM框架的主要设计模式,它们有助于从底层深入理解框架。
  第2部分,讲解MyBatis的基础应用,包括其主要组成、配置、映射器、动态SQL,并且深入MyBatis的底层运行原理和插件,详细讨论它们的高级应用。
  第3部分,讲解SpringIoC和SpringAOP。掌握Spring如何通过IoC管理资源,然后通过设计模式讨论AOP的实现原理及其使用方法、实践。讨论Spring对数据库的支持,如何整合MyBatis,并且着重讨论了Spring数据库事务的相关内容,包括数据库隔离级别和传播行为的应用。
  第4部分,讲解SpringMVC主要的流程、HandlerMapping的应用、控制器Controller、处理适配器(HandlerAdapter)、视图和视图解析器,然后讨论传递参数、注解、数据校验、消息转换和国际化等应用。
  第5部分,掌握NoSQL的优势和应用方法,掌握Redis的常用数据类型和主要命令,以及一些基本的特性(比如事务)和用法,并教会你在Java和Spring环境中使用它。
  第6部分,SSM框架+Redis的实战,通过全注解的方式搭建SSM框架,讲解Redis应用,并展现了互联网的核心问题——高并发和锁的问题。介绍了通过悲观锁、乐观锁和RedisLua语言方案来解决高并发和锁的问题。
  和读者的约定
  为了方便论述,我们进行以下约定。
  import语句一般不出现在代码中,主要是为了缩减篇幅,可以使用IDE自动导入,除非是笔者认为有必要的场景、一些重要的实例它才会出现在代码中。
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的例子大部分使用附录A中的数据模型,附录A中有基本的论述和对应的SQL语句。
  对于普通的POJO,笔者大部分都会以“/**setterandgetter**/”代替POJO的setter和getter方法,类似这样:
  publicclassRole{
  privateLongid;
  privateStringroleName;
  privateStringnote;
  /**setterandgetter**/
  }
  读者可以用IDE生成这些属性的setter和getter方法,这样做主要是为了节省篇幅,突出重点,也有利于读者的阅读。当然在一些特别重要的和使用广泛的场景,比如MyBatis入门、SSM框架整合等场景才会给出全量代码,以便读者进行编码学习。
  在默认情况下,笔者使用互联网最常用的MySQL数据库,当使用其他数据库时,笔者会事先加以说明。
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》采用MyBatis的版本是3.4.1,Spring的版本是4.3.2,Redis的版本是3.2.4,在实践的过程中读者需要注意版本之间的差异。
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的目标读者
  阅读《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》,读者要掌握以下知识:Java编程基础、JavaEE基础(JSP、Servlet等)及数据库基础知识(《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》以互联网数据库MySQL为主)。《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》以互联网企业最广泛使用的技术框架为中心讲解JavaEE技术,从入门讲解到实践,适合有志于从事JavaEE开发的各类人员阅读,通过学习《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》能够有效提高技术能力,并且将知识点应用到实际的企业工作当中去。《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》也可以作为大中专院校计算机专业的教材,帮助在校学生学习企业实际应用,当然你也可以把《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》当作一本工作手册进行查阅。
  致谢
  《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的成功出版,要感谢电子工业出版社的编辑们,没有他们的辛苦付出,绝对没有《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的成功出版,尤其是编辑汪达文,她启发我创作《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》,并且在写作过程中给了我很多的建议和帮助,她为此付出了很多时间和精力。
  在撰写《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的过程中,得到了我的师兄周吉文的大力支持,他统稿了《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》,也帮助我编写了部分章节的内容;同时还得到梁华辉和谭茂华两位好友的协助,他们以过硬的技术为我排除了不少错误,同时也给了我很多很好的建议,并撰写了一些很好的实例;还要感谢我的姐姐杨坚,她撰写了部分内容,并对书中那些晦涩难懂的句子进行了润色,在此对他们的辛苦付出表示最诚挚的感谢。
  互联网技术博大精深,涉及的技术门类特别多,甚至跨行业也特别频繁,技术更新较快。撰写《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》时笔者也遇到了一些困难,涉及的知识十分广泛,对技术要求也更高,出错的概率也大大增加,正如没有完美的程序一样,也没有完美的书,一切都需要一个完善的过程,所以尊敬的读者,如果对《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》有任何意见或建议,欢迎发送邮件(ykzhen2013@163.com),或者在博客(http://blog.csdn.net/ykzhen2015)上留言,以便于《Java EE互联网轻量级框架整合开发 SSM框架(Spring MVC+Spring+MyBatis)和Redis实现》的修订。
  杨开振
  2017年6月


其他推荐