Java EE互联网轻量级框架整合开发:SSM+Redis+Spring微服务(上下册)
- ISBN:9787121413995
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:其他
- 页数:788
- 出版时间:2021-07-01
- 条形码:9787121413995 ; 978-7-121-41399-5
本书特色
◎ 畅销书升级版,涵盖Java EE主流框架技术SSM+Redis+Spring微服务,快速上手开发 ◎内容全面,以实际应用为导向,取舍明确 ◎尤其对于技术的重点、难点,解释得深入浅出,案例丰富 ◎ 用Spring MVC整合MyBatis框架技术 ◎ 用Spring整合Redis在Java互联网技术上的应用 ◎ 通过对Spring Boot和Spring Cloud的讲解让大家理解Spring微服务开发 ◎ 通过秒杀讲解互联网高并发业务,通过Spring微服务实例串联本书的主要知识点
内容简介
随着移动互联网的兴起,以Java技术为后台的互联网技术占据了市场的地位。在Java互联网后台开发中,SSM框架(Spring+Spring?MVC+MyBatis)成为了主要架构,本书讲述了SSM框架从入门到实际工作的要求。与此同时,为了提高系统性能,NoSQL(尤其是Redis)在互联网系统中已经广泛应用用,为了适应这个变化,本书通过Spring讲解了有关Redis的技术应用。随着微服务的异军凸起,Spring微服务也成为时代的主流,本书也包括这方面的内容。本书主要分为7部分:部分对Java互联网的框架和主要涉及的模式做简单介绍;第2部分讲述MyBatis技术;第3部分讲述Spring基础(包括IoC、AOP和数据库应用),重点讲解Spring数据库事务应用,以满足互联网企业的应用要求;第4部分讲述Spring?MVC框架;第5部分通过Spring讲解Redis技术;第6部分讲解Spring微服务(Spring?Boot和Spring?Cloud);第7部分结合本书内容讲解Spring微服务实践。
目录
第1章 Java EE基础 2
1.1 Java EE概述 2
1.1.1 Java EE容器 3
1.1.2 Java EE组件 3
1.2 开发环境简介 4
1.2.1 Tomcat简介 4
1.2.1 Maven 5
1.2.3 Web项目结构 6
1.2.4 Web项目发布包 7
1.3 Web容器的组件――Servlet 7
1.3.1 Servlet入门实例 7
1.3.2 Servlet的生命周期 8
1.3.3 HttpServletRequest的应用 12
1.3.4 HttpServletResponse的应用 14
1.3.5 过滤器的使用 17
1.3.6 监听 20
1.3.7 Servlet容器初始化器 21
1.3.8 使用Cookie 23
1.3.9 提交表单 24
1.3.10 使用web.xml 26
第2章 认识SSM框架、Redis和微服务 28
2.1 Spring框架 28
2.1.1 Spring IoC简介 28
2.1.2 Spring AOP 30
2.2 MyBatis简介 31
2.2.1 Hibernate简介 32
2.2.2 MyBatis 34
2.2.3 Hibernate和MyBatis的区别 35
2.3 Spring MVC简介 36
2.4 *流行的NoSQL――Redis 36
2.5 SSM+Redis结构框图及概述 37
2.6 Spring微服务 38
第3章 Java设计模式 40
3.1 Java反射技术 40
3.1.1 通过反射构建对象 40
3.1.2 反射方法 42
3.1.3 实例 42
3.2 动态代理模式和责任链模式 43
3.2.1 JDK动态代理 44
3.2.2 CGLIB动态代理 46
3.2.3 拦截器 48
3.2.4 责任链模式 51
3.3 观察者模式 54
3.3.1 概述 54
3.3.2 实例 55
3.4 普通工厂模式和抽象工厂模式 58
3.4.1 普通工厂模式 58
3.4.2 抽象工厂模式 59
3.5 建造者模式 61
3.5.1 概述 61
3.5.2 Builder模式实例 62
第2部分 互联网持久框架――MyBatis
第4章 认识MyBatis核心组件 66
4.1 持久层的概念和MyBatis的特点 66
4.2 准备MyBatis环境 67
4.3 MyBatis的核心组件 69
4.4 SqlSessionFactory 70
4.4.1 使用XML配置文件构建SqlSessionFactory对象 70
4.4.2 使用代码构建SqlSessionFactory对象 72
4.5 SqlSession 72
4.6 映射器 73
4.6.1 用XML实现映射器 74
4.6.2 用注解实现映射器 75
4.6.3 用SqlSession发送SQL 76
4.6.4 用Mapper接口发送SQL 77
4.6.5 两种发送SQL的方式对比 77
4.7 生命周期 77
4.7.1 SqlSessionFactoryBuilder 77
4.7.2 SqlSessionFactory 78
4.7.3 SqlSession 78
4.7.4 Mapper 78
4.8 实例 79
第5章 MyBatis配置 85
5.1 概述 85
5.2 properties属性 86
5.2.1 property子元素 86
5.2.2 properties文件 87
5.2.3 程序代码传递 87
5.3 settings配置 88
5.4 typeAliases别名 90
5.4.1 系统定义别名 91
5.4.2 自定义别名 92
5.5 typeHandler类型转换器 93
5.5.1 系统定义的typeHandler 94
5.5.2 自定义typeHandler 98
5.5.3 枚举typeHandler 101
5.5.4 文件操作 105
5.6 对象工厂 106
5.7 插件 108
5.8 运行环境 108
5.8.1 事务管理器 109
5.8.2 数据源环境 111
5.9 databaseIdProvider 114
5.9.1 使用系统默认的databaseIdProvider 114
5.9.2 不使用系统规则 116
5.10 引入映射器的方法 118
第6章 映射器 120
6.1 概述 120
6.2 select元素――查询语句 121
6.2.1 简单的select元素的应用 122
6.2.2 自动映射和驼峰映射 123
6.2.3 传递多个参数 124
6.2.4 使用resultMap映射结果集 127
6.2.5 分页参数RowBounds 127
6.3 insert元素――插入语句 129
6.3.1 概述 129
6.3.2 简单的insert语句的应用 130
6.3.3 主键回填 130
6.3.4 自定义主键 131
6.4 update元素和delete元素 132
6.5 sql元素 132
6.6 参数 133
6.6.1 概述 133
6.6.2 存储过程参数支持 134
6.6.3 特殊字符串的替换和处理(#和$) 134
6.7 resultMap元素 134
6.7.1 resultMap元素的构成 135
6.7.2 使用Map存储结果集 136
6.7.3 使用POJO存储结果集 136
6.8 级联 137
6.8.1 MyBatis中的级联 137
6.8.2 建立POJO 140
6.8.3 配置映射文件 143
6.8.4 N+1问题 147
6.8.5 延迟加载 147
6.8.6 另一种级联 151
6.8.7 多对多级联 153
6.9 缓存 156
6.9.1 一级缓存和二级缓存 157
6.9.2 缓存配置项、自定义和引用 160
6.10 存储过程 161
6.10.1 IN和OUT参数存储过程 162
6.10.2 游标的使用 164
第7章 动态SQL 167
7.1 概述 167
7.2 if元素 167
7.3 choose、when和otherwise元素 168
7.4 trim、where和set元素 169
7.5 foreach元素 170
7.6 用test的属性判断字符串 171
7.7 bind元素 171
第8章 MyBatis的解析和运行原理 173
8.1 构建SqlSessionFactory过程 174
8.1.1 构建Configuration 175
8.1.2 构建映射器的内部组成 176
8.1.3 构建SqlSessionFactory 178
8.2 SqlSession运行过程 179
8.2.1 映射器的动态代理 179
8.2.2 SqlSession运行原理 183
第9章 插件 192
9.1 插件接口 192
9.2 插件的初始化 193
9.3 插件的代理和反射设计 194
9.4 常用的工具类――MetaObject 197
9.5 插件开发过程和实例 198
9.5.1 确定需要拦截的签名 198
9.5.2 实现拦截方法 200
9.5.3 配置和运行 202
9.5.4 插件实例――分页插件 203
第3部分 Spring基础
第10章 Spring IoC的概念 216
10.1 Spring概述 216
10.2 Spring IoC概述 218
10.2.1 主动创建对象 219
10.2.2 被动创建对象 220
10.2.3 Spring IoC阐述 222
10.3 Spring IoC容器 223
10.3.1 Spring IoC容器的设计 223
10.3.2 Spring IoC容器的初始化 227
10.3.3 Spring Bean的生命周期 228
第11章 装配Spring Bean 233
11.1 依赖注入和依赖查找 233
11.1.1 构造器注入 233
11.1.2 使用setter注入 234
11.1.3 依赖查找 235
11.2 装配Bean概述 236
11.3 通过XML配置装配Bean 237
11.3.1 装配简易值 237
11.3.2 装配集合 238
11.3.3 命名空间装配 241
11.4 通过注解装配Bean 243
11.4.1 使用注解@Component装配Bean 243
11.4.2 自动装配――@Autowired 247
11.4.3 自动装配的歧义性(注解@Primary和注解@Qualifier) 248
11.4.4 装载带有参数的构造方法类 251
11.4.5 使用注解@Bean装配 252
11.4.6 注解自定义Bean的初始化和销毁方法 253
11.5 装配的混合使用 253
11.6 使用Profile 256
11.6.1 使用注解@Profile配置 256
11.6.2 使用XML定义Profile 257
11.6.3 启动Profile 258
11.7 加载属性文件 260
11.7.1 使用注解方式加载属性文件 261
11.7.2 使用XML方式加载属性文件 263
11.8 条件化装配Bean 264
11.9 Bean的作用域 265
11.10 使用Spring表达式 268
11.10.1 Spring EL相关的类 268
11.10.2 Bean的属性和方法 270
11.10.3 使用类的静态常量和方法 271
11.10.4 Spring EL运算 271
第12章 面向切面编程 273
12.1 一个简单的约定游戏 273
12.1.1 约定规则 273
12.1.2 读者的代码 275
12.1.3 笔者的代码 277
12.2 Spring AOP的基本概念 279
12.2.1 AOP的概念和使用原因 279
12.2.2 面向切面编程的术语 283
12.2.3 Spring对AOP的支持 285
12.3 使用注解@AspectJ开发Spring AOP 285
12.3.1 选择连接点 285
12.3.2 创建切面 286
12.3.3 切点 287
12.3.4 测试AOP 289
12.3.5 环绕通知 291
12.3.6 织入 293
12.3.7 向通知传递参数 294
12.3.8 引入 295
12.4 使用XML配置开发Spring AOP 297
12.4.1 各类通知 299
12.4.2 环绕通知 301
12.4.3 向通知传递参数 302
12.4.4 引入 302
12.5 经典Spring AOP应用程序 303
12.6 多个切面 305
第13章 Spring和数据库编程 311
13.1 传统的JDBC代码的弊端 311
13.2 配置数据库 313
13.2.1 使用简单数据库配置 313
13.2.2 使用第三方数据库连接池 314
13.2.3 使用JNDI数据库连接池 314
13.3 JDBC代码失控的解决方案――JdbcTemplate 315
13.3.1 JdbcTemplate的增、删、查、改 316
13.3.2 执行多条SQL语句 317
13.3.3 JdbcTemplate的源码分析 319
13.4 MyBatis-Spring项目 320
13.4.1 配置SqlSessionFactoryBean 321
13.4.2 SqlSessionTemplate的配置 325
13.4.3 配置MapperFactoryBean 327
13.4.4 配置MapperScannerConfigurer 327
13.4.5 定制扫描 330
13.4.6 使用Java配置文件配置MyBatis-Spring项目 331
13.4.7 测试Spring+MyBatis 333
第14章 深入Spring数据库事务管理 336
14.1 Spring数据库事务管理器的设计 336
14.1.1 配置事务管理器 339
14.1.2 用Java配置方式实现Spring数据库事务 340
14.2 编程式事务 342
14.3 声明式事务 342
14.3.1 @Transactional的配置项 343
14.3.2 使用XML配置事务管理器 344
14.3.3 事务定义器 345
14.3.4 声明式事务的约定流程 346
14.4 数据库的相关知识 348
14.4.1 数据库事务ACID特性 348
14.4.2 丢失更新 348
14.4.3 隔离级别 349
14.5 选择隔离级别和传播行为 352
14.5.1 选择隔离级别 352
14.5.2 传播行为 353
14.6 在Spring+MyBatis组合中使用事务 354
14.6.1 实例 354
14.6.2 深入理解传播行为 361
14.7 注解@Transactional的自调用失效问题 366
14.8 典型错误用法剖析 371
14.8.1 错误使用Service 371
14.8.2 长时间占用事务 372
14.8.3 错误捕捉异常 374
第4部分 Spring MVC框架
第15章 Spring MVC的初始化和流程 2
15.1 MVC设计概述 2
15.1.1 Spring MVC的架构 3
15.1.2 Spring MVC组件与流程 4
15.1.3 Spring MVC入门实例 5
15.2 Spring MVC初始化 9
15.2.1 初始化Spring IoC上下文 10
15.2.2 初始化映射请求上下文 10
15.2.3 使用注解配置方式初始化 16
15.2.4 WebMvcConfigurer接口 20
15.3 Spring MVC开发流程详解 21
15.3.1 注解@RequestMapping的使用 21
15.3.2 控制器的开发 23
15.3.3 视图渲染 27
第16章 Spring MVC基础组件开发 31
16.1 控制器接收各类请求参数 31
16.1.1 接收普通请求参数 32
16.1.2 使用注解@RequestParam获取参数 34
16.1.3 使用URL传递参数 35
16.1.4 传递JSON参数 36
16.1.5 接收列表数据和表单序列化 38
16.2 重定向 41
16.3 保存并获取属性参数 43
16.3.1 注解@RequestAttribute 43
16.3.2 注解@SessionAttribute和注解@SessionAttributes 45
16.3.3 注解@CookieValue和注解@RequestHeader 48
16.4 验证表单 49
16.4.1 使用JSR 303注解验证输入内容 49
16.4.2 使用验证器 53
16.5 数据模型 56
16.6 视图和视图解析器 58
16.6.1 视图 58
16.6.2 视图解析器 61
16.6.3 实例:Excel视图的使用 62
16.7 上传文件 65
16.7.1 MultipartResolver概述 66
16.7.2 提交上传文件表单 69
第17章 构建REST风格网站 73
17.1 REST风格的特点 73
17.1.1 REST风格的概念 73
17.1.2 注解@ResponseBody的使用 75
17.2 Spring MVC对REST风格的支持 76
17.2.1 Spring MVC支持REST风格的注解 77
17.2.2 返回结果封装 81
17.3 RestTemplate的使用 84
第18章 Spring MVC高级应用 89
18.1 Spring MVC处理器执行的过程 89
18.1.1 HandlerMethodArgumentResolver机制 90
18.1.2 转换器和格式化器概述 92
18.1.3 一对一转换器(Converter) 93
18.1.4 数组和集合转换器(GenericConverter) 96
18.1.5 格式化器(Formatter) 100
18.1.6 HttpMessageConverter消息转换器 103
18.2 拦截器 106
18.2.1 拦截器的定义 106
18.2.2 单个拦截器的执行流程 107
18.2.3 开发拦截器 108
18.2.4 多个拦截器执行的顺序 109
18.3 为控制器添加通知 112
18.4 处理异常 116
18.5 国际化 117
18.5.1 概述 117
18.5.2 MessageSource接口 119
18.5.3 CookieLocaleResolver和SessionLocaleResolver 121
18.5.4 国际化拦截器(LocaleChangeInterceptor) 122
18.5.5 开发国际化 123
第5部分 Redis应用
第19章 Redis概述 126
19.1 Redis在Java Web中的应用 127
19.1.1 缓存 127
19.1.2 高速读/写场景 128
19.2 Redis的安装和使用 129
19.2.1 在Windows环境下安装Redis 129
19.2.2 在Linux下安装Redis 131
19.3 Redis的Java API 133
19.3.1 在Java程序中使用Redis 133
19.3.2 在Spring中使用Redis 134
19.4 Redis的数据结构简介 141
19.5 Redis和关系数据库的差异 142
第20章 Redis数据结构和其常用命令 144
20.1 Redis数据结构――字符串 145
20.2 Redis数据结构――哈希 150
20.3 Redis数据结构――链表 154
20.4 Redis数据结构――集合 160
20.5 Redis数据结构――有序集合 163
20.5.1 Redis基础命令 163
20.5.2 spring-data-redis对有序集合的封装 166
20.5.3 使用Spring操作有序集合 168
第21章 Redis的一些常用技术 171
21.1 Redis事务 171
21.1.1 Redis的基础事务 172
21.1.2 探索Redis事务回滚 174
21.1.3 使用watch命令监控事务 175
21.2 流水线 178
21.3 发布订阅 180
21.4 超时命令 184
21.5 使用Lua语言 186
21.5.1 执行输入Lua程序代码 186
21.5.2 执行Lua文件 190
第22章 Redis配置 193
22.1 Redis配置文件 193
22.2 Redis备份(持久化) 194
22.2.1 快照备份 194
22.2.2 AOF备份 195
22.3 Redis内存回收策略 196
22.4 复制 197
22.4.1 主从同步基础概念 198
22.4.2 Redis主从同步配置 198
22.4.3 Redis主从同步的过程 199
22.5 哨兵模式 201
22.5.1 哨兵模式概述 201
22.5.2 搭建哨兵模式 202
22.5.3 在Java中使用哨兵模式 204
22.5.4 哨兵模式的其他配置项 207
22.6 Redis集群 207
22.6.1 概述 207
22.6.2 搭建Redis集群 210
22.6.3 在Spring中使用Redis集群 215
第23章 Spring缓存机制和Redis的结合 217
23.1 Redis和数据库的结合 217
23.1.1 Redis和数据库读操作 218
23.1.2 Redis和数据库写操作 219
23.2 使用Spring缓存机制整合Redis 220
23.2.1 准备测试环境 220
23.2.2 Spring的缓存管理器 224
23.2.3 缓存注解简介 226
23.2.4 注解@Cacheable和@CachePut 226
23.2.5 注解@CacheEvict 230
23.2.6 不适用缓存的方法 231
23.2.7 自调用失效问题 231
23.2.8 Redis缓存管理器的配置――RedisCacheConfiguration 232
23.3 RedisTemplate的实例 234
第6部分 Spring微服务基础
第24章 Spring Boot入门 238
24.1 Spring Boot的概念 238
24.1.1 什么是Spring Boot? 238
24.1.2 为什么要使用Spring Boot? 239
24.1.3 为什么需要学习传统Spring应用程序? 239
24.2 搭建Spring Boot开发环境 239
24.2.1 使用Eclipse开发Spring Boot项目 240
24.2.2 使用IntelliJ IDEA开发Spring Boot项目 242
24.2.3 运行Spring Boot项目 243
24.3 认识Spring Boot项目和开发 244
24.3.1 Spring Boot项目是如何运行的 244
24.3.2 在Spring Boot项目中如何进行自定义开发 246
24.3.3 使用JSP视图 249
第25章 Spring Boot开发 252
25.1 使用Spring Boot开发数据库 252
25.1.1 配置数据源 252
25.1.2 整合MyBatis 258
25.1.3 数据库事务 264
25.2 使用Spring MVC 264
25.2.1 使用WebMvcConfigurer接口 265
25.2.2 使用Spring Boot的Spring MVC配置 266
25.2.3 使用转换器 266
25.3 使用Redis 268
25.3.1 配置和使用Redis 268
25.3.2 使用缓存管理器 272
第26章 Spring Boot部署、测试和监控 274
26.1 打包、部署和运行Spring Boot项目 275
26.1.1 打包Spring Boot项目 275
26.1.2 运行Spring Boot项目 276
26.1.3 修改Spring Boot项目的配置 277
26.2 Spring Boot Actuator 278
26.2.1 Actuator端点简介 278
26.2.2 保护Actuator端点 280
26.2.3 配置项 281
26.2.4 自定义端点 283
26.2.5 健康指标项 286
26.3 测试 289
26.3.1 基本测试 290
26.3.2 使用随机端口测试REST风格的请求 291
26.3.3 Mock测试 292
第27章 Spring Cloud微服务入门 295
27.1 微服务架构的概念 295
27.1.1 微服务的风格 295
27.1.2 微服务架构总结 298
27.2 Spring Cloud基础架构和概念 298
27.2.1 Spring Cloud概述 299
27.2.2 Spring Cloud的架构、组件和基础概念 299
27.3 服务治理和服务发现 301
27.3.1 服务治理中心――Eureka 301
27.3.2 服务发现 303
27.3.3 高可用 305
27.3.4 基础架构 307
27.4 服务调用――Ribbon 309
27.4.1 Ribbon概述 310
27.4.2 Ribbon实例 310
27.4.3 Ribbon工作原理 312
27.5 断路器――Hystrix 315
27.5.1 Hystrix的使用 316
27.5.2 舱壁隔离 321
27.5.3 Hystrix仪表盘 323
27.7 服务调用――OpenFeign 327
27.7.1 入门实例 327
27.7.2 在OpenFeign中使用Hystrix 330
27.8 旧网关――Zuul 331
27.8.1 入门实例 332
27.8.2 过滤器 333
27.9 新网关――Gateway 337
27.9.1 入门实例 338
27.9.2 Gateway中的术语 340
27.9.3 Gateway已有断言和过滤器的使用 340
27.9.4 自定义过滤器 345
27.10 新断路器――Resilience4j 347
27.10.1 断路器 348
27.10.2 限速器 350
27.10.3 舱壁隔离 352
27.10.4 限时器 353
第7部分 系统实践
第28章 高并发系统设计和Spring微服务实例 356
28.1 高并发系统设计 356
28.1.1 高并发系统的优化经验 356
28.1.2 性能 357
28.1.3 高可用 363
28.2 微服务实例 365
28.2.1 Spring Boot下的整合(product模块) 366
28.2.2 服务调用(user模块) 376
28.2.3 网关(gateway模块) 378
28.2.4 测试 380
附录A 数据库表模型 381
作者简介
杨开振,技术畅销书作家,精通Java 互联网技术开发和实践,拥有十余年一线企业开发经验,著有业内畅销书《深入浅出MyBatis 技术原理与实战》《深入浅出Spring Boot 2.x》和《Spring Cloud微服务和分布式系统实践》等。写作特点是技术点详尽准确、文字浅显易懂,立志于用书普及基础技术。刘家成,资深软件工程师,曾任职Synnex中国、亚信国际等,在电信、分销领域有丰富经验,在Java高并发和Spring生态有深刻的理解。
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0 -
贝叶斯推理与机器学习
¥139.3¥199.0