随着移动互联网的兴起,以Java技术为后台的互联网技术占据了市场的主导地位,而在Java互联网后台开发中,SSM框架(Spring Spring MVC MyBatis)成为了主要架构,本书以此为焦点从入门到实际工作要求讲述了SSM框架的技术应用;与此同时,为了提高系统性能,NoSQL(尤其是Redis)在互联网系统中已经广泛使用,为了适应这个变化,本书通过Spring讲解了有关Redis的技术应用,这样更加贴近实际学习和工作的需要。本书主要分为6个部分,第1部分对Java互联网的框架和主要涉及的模式做初步简介;第2部分讲述MyBatis技术;第3部分讲述Spring基础(包括IoC、AOP和数据库应用),重点讲解Spring数据库事务应用,以满足互联网企业的应用要求;第4部分,讲述Spring MVC框架;第5部分,通过Spring技术的应用,讲解Redis技术;第6部分,讲解SSM Redis实践应用,通过互联网高并发如抢票、抢红包等场景,使用全注解的方式讲解SSM框架的整合,以及高并发与锁的应用和系统性能优化。本书结合企业的实际需求,从原理到实践讲解SSM Redis技术应用,无论你是Java程序员、SSM应用和研究人员,还是Redis应用人员、互联网开发人员,都可以从本书中收获知识。
杨开振 拥有十余年一线Java开发工作经验,热衷于Java互联网技术方向研究,目前从事Java互联网技术在线教育,著有畅销书《深入浅出MyBatis技术原理与实战》。
周吉文 高级工程师,曾获广东省科技进步一等奖,曾任国家“863”计划项目软件组组长,担任珠海市第二人民医院信息部主任多年,有丰富的项目实施和管理经验。
梁华辉 博学Java开发专家,有丰富的企业级应用及Web项目的开发经验。对软件设计模式和代码整洁方面有深入理解,对Spring、Hibernate等主流开源框架有深入研究。
谭茂华 博学Java开发专家,拥有十余年供应链管理、金融、物联网等行业大型系统软件开发经验。热衷于软件架构、软件研发过程控制、Java开源技术(尤其是Spring体系技术)的研究。
目录
第1部分 入门和技术基础
第1章 认识SSM框架和Redis 2
1.1 Spring框架 2
1.1.1 Spring IoC简介 2
1.1.2 Spring AOP 4
1.2 MyBatis简介 6
1.2.1 Hibernate简介 7
1.2.2 MyBatis 8
1.2.3 Hibernate和MyBatis的区别 11
1.3 Spring MVC简介 11
1.4 流行的NoSQL——Redis 12
1.5 SSM Redis结构框图及概述 13
第2章 Java设计模式 15
2.1 Java反射技术 15
2.1.1 通过反射构建对象 15
2.1.2 反射方法 17
2.1.3 实例 18
2.2 动态模式和责任链模式 19
2.2.1 JDK动态 20
2.2.2 CGLIB动态 22
2.2.3 拦截器 24
2.2.4 责任链模式 28
2.3 观察者(Observer)模式 30
2.3.1 概述 31
2.3.2 实例 32
2.4 工厂模式和抽象工厂模式 35
2.4.1 普通工厂(Simple Factory)模式 35
2.4.2 抽象工厂(Abstract Factory)模式 36
2.5 建造者(Builder)模式 38
2.5.1 概述 38
2.5.2 Builder模式实例 39
2.6 总结 41
第2部分 互联网持久框架——MyBatis
第3章 认识MyBatis核心组件 44
3.1 持久层的概念和MyBatis的特点 44
3.2 准备MyBatis环境 45
3.3 MyBatis的核心组件 46
3.4 SqlSessionFactory(工厂接口) 47
3.4.1 使用XML构建SqlSessionFactory 48
3.4.2 使用代码创建SqlSessionFactory 50
3.5 SqlSession 50
3.6 映射器 51
3.6.1 用XML实现映射器 52
3.6.2 注解实现映射器 53
3.6.3 SqlSession发送SQL 54
3.6.4 用Mapper接口发送SQL 55
3.6.5 对比两种发送SQL方式 55
3.7 生命周期 55
3.7.1 SqlSessionFactoryBuilder 56
3.7.2 SqlSessionFactory 56
3.7.3 SqlSession 56
3.7.4 Mapper 56
3.8 实例 57
第4章 MyBatis配置 63
4.1 概述 63
4.2 properties属性 64
4.2.1 property子元素 64
4.2.2 使用properties文件 65
4.2.3 使用程序传递方式传递参数 66
4.2.4 总结 66
4.3 settings设置 66
4.4 typeAliases别名 69
4.4.1 系统定义别名 69
4.4.2 自定义别名 72
4.5 typeHandler类型转换器 72
4.5.1 系统定义的typeHandler 73
4.5.2 自定义typeHandler 78
4.5.3 枚举typeHandler 81
4.5.4 文件操作 86
4.6 ObjectFactory(对象工厂) 87
4.7 插件 89
4.8 environments(运行环境) 89
4.8.1 transactionManager(事务管理器) 90
4.8.2 environment数据源环境 92
4.9 databaseIdProvider数据库厂商标识 95
4.9.1 使用系统默认的databaseIdProvider 95
4.9.2 不使用系统规则 98
4.10 引入映射器的方法 99
第5章 映射器 102
5.1 概述 102
5.2 select元素——查询语句 103
5.2.1 简单的select元素的应用 104
5.2.2 自动映射和驼峰映射 105
5.2.3 传递多个参数 106
5.2.4 使用resultMap映射结果集 109
5.2.5 分页参数RowBounds 110
5.3 insert元素——插入语句 112
5.3.1 概述 112
5.3.2 简单的insert语句的应用 113
5.3.3 主键回填 113
5.3.4 自定义主键 114
5.4 update元素和delete元素 114
5.5 sql元素 115
5.6 参数 116
5.6.1 概述 116
5.6.2 存储过程参数支持 117
5.6.3 特殊字符串的替换和处理(#和$) 117
5.7 resultMap元素 118
5.7.1 resultMap元素的构成 118
5.7.2 使用map存储结果集 119
5.7.3 使用POJO存储结果集 119
5.8 级联 120
5.8.1 MyBatis中的级联 121
5.8.2 建立POJO 124
5.8.3 配置映射文件 127
5.8.4 N 1问题 133
5.8.5 延迟加载 133
5.8.6 另一种级联 137
5.8.7 多对多级联 140
5.9 缓存 143
5.9.1 一级缓存和二级缓存 144
5.9.2 缓存配置项、自定义和引用 147
5.10 存储过程 149
5.10.1 IN和OUT参数存储过程 150
5.10.2 游标的使用 152
第6章 动态SQL 155
6.1 概述 155
6.2 if元素 156
6.3 choose、when、otherwise元素 156
6.4 trim、where、set元素 157
6.5 foreach元素 159
6.6 用test的属性判断字符串 159
6.7 bind元素 160
第7章 MyBatis的解析和运行原理 162
7.1 构建SqlSessionFactory过程 163
7.1.1 构建Configuration 165
7.1.2 构建映射器的内部组成 165
7.1.3 构建SqlSessionFactory 167
7.2 SqlSession运行过程 168
7.2.1 映射器(Mapper)的动态 168
7.2.2 SqlSession下的四大对象 172
7.2.3 SqlSession运行总结 179
第8章 插件 181
8.1 插件接口 181
8.2 插件的初始化 182
8.3 插件的和反射设计 183
8.4 常用的工具类——MetaObject 186
8.5 插件开发过程和实例 187
8.5.1 确定需要拦截的签名 187
8.5.2 实现拦截方法 189
8.5.3 配置和运行 191
8.5.4 插件实例——分页插件 192
8.6 总结 205
第3部分 Spring基础
第9章 Spring IoC的概念 208
9.1 Spring的概述 208
9.2 Spring IoC概述 210
9.2.1 主动创建对象 211
9.2.2 被动创建对象 213
9.2.3 Spring IoC阐述 214
9.3 Spring IoC容器 215
9.3.1 Spring IoC容器的设计 215
9.3.2 Spring IoC容器的初始化和依赖注入 218
9.3.3 Spring Bean的生命周期 219
9.4 小结 223
第10章 装配Spring Bean 224
10.1 依赖注入的3种方式 224
10.1.1 构造器注入 224
10.1.2 使用setter注入 225
10.1.3 接口注入 226
10.2 装配Bean概述 227
10.3 通过XML配置装配Bean 228
10.3.1 装配简易值 228
10.3.2 装配集合 229
10.3.3 命名空间装配 233
10.4 通过注解装配Bean 235
10.4.1 使用@Component装配Bean 236
10.4.2 自动装配——@Autowired 239
10.4.3 自动装配的歧义性(@Primary和@Qualifier) 241
10.4.4 装载带有参数的构造方法类 244
10.4.5 使用@Bean装配Bean 245
10.4.6 注解自定义Bean的初始化和销毁方法 245
10.5 装配的混合使用 246
10.6 使用Profile 249
10.6.1 使用注解@Profile配置 249
10.6.2 使用XML定义Profile 250
10.6.3 启动Profile 252
10.7 加载属性(properties)文件 254
10.7.1 使用注解方式加载属性文件 254
10.7.2 使用XML方式加载属性文件 257
10.8 条件化装配Bean 258
10.9 Bean的作用域 259
10.10 使用Spring表达式(Spring EL) 261
10.10.1 Spring EL相关的类 261
10.10.2 Bean的属性和方法 264
10.10.3 使用类的静态常量和方法 265
10.10.4 Spring EL运算 265
第11章 面向切面编程 267
11.1 一个简单的约定游戏 267
11.1.1 约定规则 267
11.1.2 读者的代码 269
11.1.3 笔者的代码 271
11.2 Spring AOP的基本概念 274
11.2.1 AOP的概念和使用原因 274
11.2.2 面向切面编程的术语 278
11.2.3 Spring对AOP的支持 280
11.3 使用@AspectJ注解开发Spring AOP 280
11.3.1 选择切点 281
11.3.2 创建切面 281
11.3.3 连接点 283
11.3.4 测试AOP 285
11.3.5 环绕通知 287
11.3.6 织入 289
11.3.7 给通知传递参数 289
11.3.8 引入 290
11.4 使用XML配置开发Spring AOP 293
11.4.1 前置通知、后置通知、返回通知和异常通知 294
11.4.2 环绕通知 296
11.4.3 给通知传递参数 297
11.4.4 引入 298
11.5 经典Spring AOP应用程序 299
11.6 多个切面 301
11.7 小结 306
第12章 Spring和数据库编程 307
12.1 传统的JDBC代码的弊端 307
12.2 配置数据库资源 309
12.2.1 使用简单数据库配置 309
12.2.2 使用第三方数据库连接池 310
12.2.3 使用JNDI数据库连接池 310
12.3 JDBC代码失控的解决方案——jdbcTemplate 311
12.3.1 jdbcTemplate的增、删、查、改 312
12.3.2 执行多条SQL 314
12.3.3 jdbcTemplate的源码分析 315
12.4 MyBatis-Spring项目 317
12.4.1 配置SqlSessionFactoryBean 318
12.4.2 SqlSessionTemplate组件 322
12.4.3 配置MapperFactoryBean 324
12.4.4 配置MapperScannerConfigurer 324
12.4.5 测试Spring MyBatis 327
第13章 深入Spring数据库事务管理 330
13.1 Spring数据库事务管理器的设计 331
13.1.1 配置事务管理器 333
13.1.2 用Java配置方式实现Spring数据库事务 334
13.2 编程式事务 336
13.3 声明式事务 337
13.3.1 Transactional的配置项 337
13.3.2 使用XML进行配置事务管理器 339
13.3.3 事务定义器 340
13.3.4 声明式事务的约定流程 341
13.4 数据库的相关知识 343
13.4.1 数据库事务ACID特性 343
13.4.2 丢失更新 343
13.4.3 隔离级别 344
13.5 选择隔离级别和传播行为 347
13.5.1 选择隔离级别 347
13.5.2 传播行为 348
13.6 在Spring MyBatis组合中使用事务 350
13.7 @Transactional的自调用失效问题 358
13.8 典型错误用法的剖析 363
13.8.1 错误使用Service 363
13.8.2 过长时间占用事务 364
13.8.3 错误捕捉异常 366
第4部分 Spring MVC框架
第14章 Spring MVC的初始化和流程 370
14.1 MVC设计概述 370
14.1.1 Spring MVC的架构 372
14.1.2 Spring MVC组件与流程 372
14.1.3 Spring MVC入门的实例 374
14.2 Spring MVC初始化 378
14.2.1 初始化Spring IoC上下文 378
14.2.2 初始化映射请求上下文 379
14.2.3 使用注解配置方式初始化 386
14.3 S
还不错,挺适合我这个阶段的
还没看,纸质还可以
还行,写的不错。
不错!写的通俗易懂
刚收到书本,感觉还不错,值得一看!
还是比较基础
内容不错,比较适合有经验,但是对于框架了解不多的人,另外,老板默认顺丰快递,让我小小的感动了一把!
还不错吧,难得的出版
里面的内容还是不错的
没看呢应该可以吧
很实用,提升代码技能
书很好,很厚,内容比较难,不适合新手阅读,适合有一定ssm基础的同学进阶阅读。内容很好没话说,作者人不错,技术好
还可以,ssm框架的书很少,已经很新了
很失望!!!!
包装的不够结实
快递很给力,书的内容不错,正在阅读
还不错哦(⊙o⊙)哦
物流快,书质量看着不错(还没有拆封)
包装很好,很有用。
物流真的非常快,包装也很完好,很赞。
质量非常好!
很好,快递很快,对学习java EE很有帮助。
拿到了,还没有开始看,用到了再回来追加
从未见过如此脏的书
学习,学习,万恶的代码啊啊啊啊
对目前的学习进度很有帮助
正在学习中,刚看感觉不是很明白。
快递员,无力吐槽,说是派件拍错了,然后各种奇葩事情!!!建议当当别用这家“芝麻开门”快递公司了,各种差劲!
书很不错 学习中
内容看着不错,包装完好
内容还好,书页有烂的
快递途中 有损伤
书有磕碰不过影响不大,快递太慢,而且联系不上。
不错,帮助挺大的。
书还不错。
介绍框架的书可能确实难把握,看了大半了,这本书真的只能说聊胜于无,错误也比较多,而且卖贵了
很不错,里面讲的很细,之前学过,不过有的地方忘了,正好在重新巩固一下
本人从事安卓开发,一直以来对web有兴趣,特意买此书学习java技术。
属于讲解核心,不写细节,有时候会发现太难,需要一定功底
这本书可以说是顺应需求产生的,之前一直买不到ssm这么全面的书,并且还是带着redis讲解的,直接看视频太琐碎,这本书可以给我系统的认识,很不错,就是贵了点,估计是刚出版,以后会和什么整合开发入门精通一样价格。当当很不错的,增值发票也开了,很好。