互联网
类型
可以朗读
语音朗读
607千字
字数
2021-03-01
发行日期
展开全部
主编推荐语
从企业需求入手,注重实操与项目演练,帮你快速求职入行。
内容简介
本书由资深Java工程师结合多年大厂开发经验精心编撰,全面系统地介绍Java EE企业级开发所需要的轻量级开源技术栈,涉及Maven、Servlet、Jetty、Tomcat、Spring框架、Spring Web MVC、Spring Security、MyBatis、MySQL、Thymeleaf、Bootstrap、REST客户端、Jersey、WebSocket、JMS、Email、任务执行与调度、缓存、Spring Boot、Spring Cloud等方面的内容。
“轻量级”开发模式已经深入人心,被广大互联网公司所采用,本书从开发环境搭建开始,循序渐进地讲解核心技术、热点框架,适时结合项目与案例介绍这些技术与框架的实际应用,特别是对当前热点的微服务开发技术进行了详细的阐述,对于拥有Java基础,想开发企业项目的读者,本书可帮助你快速上手。
本书技术先进,案例丰富,主要面向对Java EE企业级开发感兴趣的计算机专业学生、软件工程师、系统架构师等,也可以用作软件学院或培训机构的教学用书。
目录
- 版权信息
- 内容简介
- 作者简介
- 前言
- 第1章 Java EE概述
- 1.1 Java EE发展简史
- 1.1.1 Java平台发展简史
- 1.1.2 Java EE现状
- 1.2 传统企业级应用技术的不足
- 1.2.1 规范太重
- 1.2.2 学习成本太高
- 1.2.3 不够灵活
- 1.2.4 发展缓慢
- 1.3 轻量级Java EE的技术特点
- 1.3.1 轻量级架构
- 1.3.2 符合二八定律
- 1.3.3 基于开源技术
- 1.3.4 支持微服务
- 1.3.5 可用性和扩展性
- 1.3.6 支撑大型互联网应用
- 1.4 开发环境搭建
- 1.4.1 安装JDK
- 1.4.2 Maven安装
- 1.4.3 安装Eclipse
- 1.4.4 安装IntelliJ IDEA
- 1.4.5 安装Apache Tomcat
- 1.5 总 结
- 1.6 习 题
- 第2章 项目管理——Maven
- 2.1 Maven概述
- 2.1.1 Maven的主要功能
- 2.1.2 创建Maven项目
- 2.1.3 探索Maven项目
- 2.1.4 构建Maven项目
- 2.2 理解Maven构建生命周期
- 2.2.1 Maven阶段
- 2.2.2 完整的生命周期阶段
- 2.2.3 生命周期阶段在命令行中的调用
- 2.2.4 使用构建生命周期来设置项目
- 2.3 理解POM
- 2.3.1 Super POM
- 2.3.2 最小化POM
- 2.4 实战:使用Eclipse创建Maven应用
- 2.4.1 创建Maven应用
- 2.4.2 运行Maven应用
- 2.4.3 导入Maven应用
- 2.4.4 相关问题解决
- 2.5 实战:使用IntelliJ IEDA创建Maven应用
- 2.5.1 创建Maven应用
- 2.5.2 运行Maven应用
- 2.5.3 导入Maven应用
- 2.5.4 相关问题解决
- 2.6 总 结
- 2.7 习 题
- 第3章 Web应用的基石——Servlet
- 3.1 Servlet概述
- 3.1.1 Servlet架构
- 3.1.2 Servlet生命周期
- 3.1.3 常用方法
- 3.2 Servlet容器
- 3.2.1 常用Servlet容器
- 3.2.2 Tomcat和Jetty的相同点
- 3.2.3 Tomcat和Jetty的不同点
- 3.2.4 总结
- 3.3 过滤器
- 3.3.1 什么是过滤器
- 3.3.2 过滤器生命周期
- 3.3.3 包装请求和响应
- 3.3.4 过滤器环境
- 3.3.5 Web应用中过滤器的配置
- 3.3.6 过滤器和请求分派器
- 3.4 请 求
- 3.4.1 HTTP协议参数
- 3.4.2 属性
- 3.4.3 请求头
- 3.4.4 请求路径元素
- 3.4.5 路径转换方法
- 3.4.6 请求数据编码
- 3.5 Servlet上下文
- 3.5.1 ServletContext接口作用域
- 3.5.2 初始化参数
- 3.5.3 配置方法
- 3.5.4 上下文属性
- 3.5.5 资源
- 3.6 响 应
- 3.6.1 缓冲
- 3.6.2 头
- 3.6.3 方法
- 3.7 监听器
- 3.7.1 事件类型和监听器接口
- 3.7.2 部署描述符示例
- 3.7.3 监听器实例和线程
- 3.7.4 监听器异常
- 3.7.5 分布式容器
- 3.7.6 会话事件
- 3.8 会 话
- 3.8.1 会话跟踪机制
- 3.8.2 创建会话
- 3.8.3 会话范围
- 3.8.4 绑定属性到会话
- 3.8.5 会话超时
- 3.8.6 最后访问时间
- 3.8.7 线程问题
- 3.8.8 分布式环境
- 3.8.9 客户端语义
- 3.9 实战:创建基于Servlet的Web应用
- 3.9.1 创建动态Web项目
- 3.9.2 创建Servlet实现类
- 3.9.3 编译应用
- 3.9.4 运行应用
- 3.10 Tomcat服务器概述
- 3.10.1 Tomcat目录结构
- 3.10.2 Tomcat主要组件
- 3.10.3 Tomcat处理HTTP请求的过程
- 3.11 实战:在应用里面内嵌Tomcat容器
- 3.11.1 安装tomcat7-maven-plugin
- 3.11.2 运行应用
- 3.11.3 访问应用
- 3.12 Jetty服务器概述
- 3.12.1 高性能Servlet容器
- 3.12.2 可拔插
- 3.12.3 Jetty常用配置
- 3.13 实战:在应用里面内嵌Jetty容器
- 3.13.1 Maven插件形式
- 3.13.2 编程方式
- 3.14 总 结
- 3.15 习 题
- 第4章 流行的开源关系型数据库——MySQL
- 4.1 MySQL概述
- 4.1.1 MySQL名字的由来
- 4.1.2 MySQL的发展历程
- 4.1.3 MySQL的特点
- 4.2 MySQL的安装
- 4.2.1 下载安装包
- 4.2.2 解压安装包
- 4.2.3 创建my.ini
- 4.2.4 初始化安装
- 4.2.5 启动和关闭MySQL Server
- 4.3 使用MySQL客户端
- 4.4 MySQL基本操作
- 4.5 总 结
- 4.6 习 题
- 第5章 Java操作数据库——JDBC
- 5.1 JDBC概述
- 5.2 JDBC的核心概念
- 5.2.1 建立连接
- 5.2.2 执行SQL并操作结果集
- 5.2.3 两层模型
- 5.2.4 三层模型
- 5.2.5 JDBC与Java EE平台的关系
- 5.3 使用PreparedStatement
- 5.3.1 创建PreparedStatement对象
- 5.3.2 为什么使用PreparedStatement
- 5.4 事务管理
- 5.4.1 事务边界和自动提交
- 5.4.2 关闭自动提交模式
- 5.4.3 事务隔离级别
- 5.4.4 性能考虑
- 5.4.5 保存点
- 5.5 实战:使用JDBC操作数据库
- 5.5.1 初始化数据库
- 5.5.2 建表
- 5.5.3 初始化应用
- 5.5.4 创建测试类
- 5.6 理解连接池技术
- 5.7 实战:使用数据库连接池DBCP
- 5.7.1 添加DBCP依赖
- 5.7.2 编写数据库工具类
- 5.7.3 理解DbUtil的配置化
- 5.7.4 编写测试用例
- 5.8 总 结
- 5.9 习 题
- 第6章 一站式应用框架——Spring
- 6.1 Spring概述
- 6.1.1 Spring的广义与狭义
- 6.1.2 Spring框架总览
- 6.1.3 Spring框架常用模块
- 6.1.4 Spring设计模式
- 6.2 IoC
- 6.2.1 依赖注入与控制反转
- 6.2.2 IoC容器和Bean
- 6.2.3 配置元数据
- 6.2.4 实例化容器
- 6.2.5 使用容器
- 6.2.6 Bean的命名
- 6.2.7 实例化bean的方式
- 6.2.8 注入方式
- 6.2.9 实战:依赖注入的例子
- 6.2.10 依赖注入的详细配置
- 6.2.11 使用depends-on
- 6.2.12 延迟加载bean
- 6.2.13 自动装配
- 6.2.14 方法注入
- 6.2.15 bean scope
- 6.2.16 singleton bean与prototype bean
- 6.2.17 理解生命周期机制
- 6.2.18 基于注解的配置
- 6.2.19 基于注解的配置与基于XML的配置
- 6.3 AOP
- 6.3.1 AOP概述
- 6.3.2 AOP核心概念
- 6.3.3 Spring AOP
- 6.3.4 AOP代理
- 6.3.5 实战:使用@AspectJ的例子
- 6.3.6 基于XML的AOP
- 6.3.7 实战:基于XML的AOP的例子
- 6.4 资源处理
- 6.4.1 常用资源接口
- 6.4.2 内置资源接口实现
- 6.4.3 ResourceLoader
- 6.4.4 ResourceLoaderAware
- 6.4.5 资源作为依赖
- 6.5 表达式语言SpEL
- 6.5.1 表达式接口
- 6.5.2 对于bean定义的支持
- 6.5.3 实战:使用SpEL的例子
- 6.6 总 结
- 6.7 习 题
- 第7章 Spring测试
- 7.1 测试概述
- 7.1.1 传统的测试所面临的问题
- 7.1.2 如何破解测试面临的问题
- 7.1.3 测试类型
- 7.1.4 测试范围及比例
- 7.2 Mock对象
- 7.2.1 Environment
- 7.2.2 JNDI
- 7.2.3 Servlet API
- 7.3 测试工具类
- 7.3.1 测试工具
- 7.3.2 测试Spring Web MVC
- 7.4 测试相关的注解
- 7.4.1 @BootstrapWith
- 7.4.2 @ContextConfiguration
- 7.4.3 @WebAppConfiguration
- 7.4.4 @ContextHierarchy
- 7.4.5 @ActiveProfiles
- 7.4.6 @TestPropertySource
- 7.4.7 @DirtiesContext
- 7.4.8 @TestExecutionListeners
- 7.4.9 @Commit
- 7.4.10 @Rollback
- 7.4.11 @BeforeTransaction
- 7.4.12 @AfterTransaction
- 7.4.13 @Sql
- 7.4.14 @SqlConfig
- 7.4.15 @SqlGroup
- 7.4.16 Spring JUnit 4注解
- 7.4.17 Spring JUnit Jupiter注解
- 7.5 Spring TestContext框架
- 7.5.1 Spring TestContext框架概述
- 7.5.2 核心抽象
- 7.5.3 引导TestContext
- 7.5.4 TestExecutionListener配置
- 7.5.5 上下文管理
- 7.5.6 测试夹具的注入
- 7.5.7 如何测试request bean和session bean
- 7.5.8 事务管理
- 7.5.9 执行SQL脚本
- 7.6 Spring MVC Test框架
- 7.6.1 服务端测试概述
- 7.6.2 选择测试策略
- 7.6.3 设置测试功能
- 7.6.4 执行请求
- 7.6.5 定义期望
- 7.6.6 注册过滤器
- 7.6.7 脱离容器的测试
- 7.6.8 实战:服务端测试Spring Web MVC的例子
- 7.7 总 结
- 7.8 习 题
- 第8章 Spring事务管理
- 8.1 事务管理概述
- 8.1.1 Spring事务管理优势
- 8.1.2 全局事务与本地事务
- 8.1.3 Spring事务模型
- 8.2 通过事务实现资源同步
- 8.2.1 高级别的同步方法
- 8.2.2 低级别的同步方法
- 8.2.3 TransactionAwareDataSourceProxy
- 8.3 声明式事务管理
- 8.3.1 声明式事务管理
- 8.3.2 实战:声明式事务管理的例子
- 8.3.3 事务回滚
- 8.3.4 配置不同的事务策略
- 8.3.5 @Transactional详解
- 8.3.6 事务传播机制
- 8.4 编程式事务管理
- 8.4.1 TransactionTemplate
- 8.4.2 PlatformTransactionManager
- 8.4.3 声明式事务管理和编程式事务管理
- 8.5 总 结
- 8.6 习 题
- 第9章 MVC模式的典范——Spring Web MVC
- 9.1 Spring Web MVC概述
- 9.2 DispatcherServlet
- 9.2.1 DispatcherServlet概述
- 9.2.2 上下文层次结构
- 9.2.3 处理流程
- 9.2.4 拦截
- 9.3 过滤器
- 9.3.1 HTTP PUT表单
- 9.3.2 转发头
- 9.3.3 ShallowEtagHeaderFilter
- 9.3.4 CORS
- 9.4 控制器
- 9.4.1 声明控制器
- 9.4.2 请求映射
- 9.4.3 处理器方法
- 9.4.4 模型方法
- 9.4.5 绑定器方法
- 9.5 异常处理
- 9.5.1 @ExceptionHandler
- 9.5.2 框架异常处理
- 9.5.3 REST API异常
- 9.5.4 注解异常
- 9.5.5 容器错误页面
- 9.6 CORS处理
- 9.6.1 @CrossOrigin
- 9.6.2 全局CORS配置
- 9.6.3 自定义
- 9.6.4 CORS过滤器
- 9.7 HTTP缓存
- 9.7.1 缓存控制
- 9.7.2 静态资源
- 9.7.3 控制器缓存
- 9.8 MVC配置
- 9.8.1 启用MVC配置
- 9.8.2 类型转换
- 9.8.3 验证
- 9.8.4 拦截器
- 9.8.5 内容类型
- 9.8.6 消息转换器
- 9.8.7 视图控制器
- 9.8.8 视图解析器
- 9.8.9 静态资源
- 9.8.10 DefaultServletHttpRequestHandler
- 9.8.11 路径匹配
- 9.9 实战:基于Spring Web MVC的JSON类型的处理
- 9.9.1 接口设计
- 9.9.2 系统配置
- 9.9.3 后台编码实现
- 9.9.4 应用配置
- 9.9.5 运行应用
- 9.10 实战:基于Spring Web MVC的XML类型的处理
- 9.10.1 接口设计
- 9.10.2 系统配置
- 9.10.3 后台编码实现
- 9.10.4 应用配置
- 9.10.5 运行应用
- 9.11 总 结
- 9.12 习 题
- 第10章 全能安全框架——Spring Security
- 10.1 基于角色的权限管理
- 10.1.1 角色的概念
- 10.1.2 基于角色的访问控制
- 10.1.3 哪种方式更好
- 10.1.4 真实的案例
- 10.2 Spring Security概述
- 10.2.1 Spring Security的认证模型
- 10.2.2 Spring Security的安装
- 10.2.3 模块
- 10.2.4 Spring Security 5的新特性及高级功能
- 10.3 实战:基于Spring Security安全认证
- 10.3.1 添加依赖
- 10.3.2 添加业务代码
- 10.3.3 配置消息转换器
- 10.3.4 配置Spring Security
- 10.3.5 创建应用配置类
- 10.3.6 创建内嵌Jetty的服务器
- 10.3.7 应用启动器
- 10.3.8 运行应用
- 10.4 总 结
- 10.5 习 题
- 第11章 轻量级持久层框架——MyBatis
- 11.1 MyBatis概述
- 11.1.1 安装MyBatis
- 11.1.2 MyBatis功能架构
- 11.1.3 MyBatis的优缺点
- 11.2 MyBatis四大核心组件
- 11.2.1 SqlSessionFactoryBuilder
- 11.2.2 SqlSessionFactory
- 11.2.3 SqlSession
- 11.2.4 Mapper
- 11.3 生命周期及作用域
- 11.3.1 SqlSessionFactoryBuilder
- 11.3.2 SqlSessionFactory
- 11.3.3 SqlSession
- 11.3.4 Mapper实例
- 11.4 总 结
- 11.5 习 题
- 第12章 MyBatis的高级应用
- 12.1 配置文件
- 12.1.1 properties
- 12.1.2 settings
- 12.1.3 typeAliases
- 12.1.4 typeHandlers
- 12.1.5 objectFactory
- 12.1.6 plugins
- 12.1.7 environments
- 12.1.8 transactionManager
- 12.1.9 dataSource
- 12.1.10 databaseIdProvider
- 12.1.11 mappers
- 12.2 Mapper映射文件
- 12.2.1 select
- 12.2.2 insert、update和delete
- 12.2.3 处理主键
- 12.2.4 sql
- 12.2.5 参数
- 12.2.6 结果映射
- 12.2.7 自动映射
- 12.2.8 缓存
- 12.3 动态SQL
- 12.3.1 if
- 12.3.2 choose、when和otherwise
- 12.3.3 trim、where和set
- 12.3.4 foreach
- 12.3.5 bind
- 12.3.6 多数据库支持
- 12.4 常用API
- 12.4.1 SqlSessionFactoryBuilder
- 12.4.2 SqlSessionFactory
- 12.4.3 SqlSession
- 12.4.4 注解
- 12.5 常用插件
- 12.5.1 MyBatis Generator
- 12.5.2 PageHelper
- 12.6 实战:使用MyBatis操作数据库
- 12.6.1 初始化表结构
- 12.6.2 添加依赖
- 12.6.3 编写业务代码
- 12.6.4 编写配置文件
- 12.6.5 编写测试用例
- 12.6.6 运行测试用例
- 12.7 总 结
- 12.8 习 题
- 第13章 模板引擎——Thymeleaf
- 13.1 常用Java模板引擎
- 13.1.1 关于性能
- 13.1.2 为什么选择Thymeleaf而不是JSP
- 13.1.3 什么是Thymeleaf
- 13.1.4 Thymeleaf处理模板
- 13.1.5 标准方言
- 13.2 Thymeleaf标准方言
- 13.2.1 Thymeleaf标准表达式语法
- 13.2.2 消息表达式
- 13.2.3 变量表达式
- 13.2.4 表达式基本对象
- 13.2.5 表达式工具对象
- 13.2.6 选择表达式
- 13.2.7 链接表达式
- 13.2.8 分段表达式
- 13.2.9 字面量
- 13.2.10 算术运算
- 13.2.11 比较与相等
- 13.2.12 条件表达式
- 13.2.13 默认表达式
- 13.2.14 无操作标记
- 13.2.15 数据转换及格式化
- 13.2.16 表达式预处理
- 13.3 Thymeleaf设置属性值
- 13.3.1 设置任意属性值
- 13.3.2 设置值到指定的属性
- 13.3.3 同时设置多个值
- 13.3.4 附加和添加前缀
- 13.3.5 固定值布尔属性
- 13.3.6 默认属性处理器
- 13.3.7 支持对HTML 5友好的属性及元素名称
- 13.4 Thymeleaf迭代器与条件语句
- 13.4.1 迭代器
- 13.4.2 条件语句
- 13.5 Thymeleaf模板片段
- 13.5.1 定义和引用片段
- 13.5.2 Thymeleaf片段规范语法
- 13.5.3 不使用th:fragment
- 13.5.4 th:insert、th:replace和th:include三者的区别
- 13.6 Thymeleaf表达式基本对象
- 13.6.1 基本对象
- 13.6.2 Web上下文命名空间用于request/session属性等
- 13.6.3 Web上下文对象
- 13.7 实战:基于Thymeleaf的Web应用
- 13.7.1 添加依赖
- 13.7.2 编写控制器
- 13.7.3 应用配置
- 13.7.4 编写Thymeleaf模板
- 13.8 总 结
- 13.9 习 题
- 第14章 锦上添花——Bootstrap
- 14.1 Bootstrap概述
- 14.1.1 HTML 5 Doctype
- 14.1.2 响应式meta标签
- 14.1.3 Box-Sizing
- 14.1.4 Normalize.css
- 14.1.5 模板
- 14.2 Bootstrap核心概念
- 14.2.1 Bootstrap的网格系统
- 14.2.2 媒体查询
- 14.2.3 网格选项
- 14.2.4 移动设备及桌面设备
- 14.3 实战:基于Bootstrap的Web应用
- 14.3.1 引入Bootstrap库的样式
- 14.3.2 引入Bootstrap库的脚本
- 14.3.3 添加Bootstrap样式类
- 14.3.4 运行应用
- 14.4 总 结
- 14.5 习 题
- 第15章 REST客户端
- 15.1 RestTemplate
- 15.1.1 初始化
- 15.1.2 URI
- 15.1.3 请求头
- 15.1.4 消息体
- 15.2 WebClient
- 15.2.1 retrieve()方法
- 15.2.2 exchange()方法
- 15.2.3 请求体
- 15.2.4 生成器选项
- 15.2.5 过滤器
- 15.3 实战:基于RestTemplate的天气预报服务
- 15.3.1 添加依赖
- 15.3.2 后台编码实现
- 15.3.3 运行
- 15.4 实战:基于WebClient的文件上传和下载
- 15.4.1 添加依赖
- 15.4.2 文件上传的编码实现
- 15.4.3 文件下载的编码实现
- 15.4.4 运行
- 15.5 总 结
- 15.6 习 题
- 第16章 REST服务框架——Jersey
- 16.1 REST概述
- 16.1.1 REST的基本概念
- 16.1.2 REST设计原则
- 16.1.3 成熟度模型
- 16.1.4 REST API管理
- 16.1.5 常用技术
- 16.2 实战:基于Jersey的REST服务
- 16.2.1 创建一个新项目
- 16.2.2 探索项目
- 16.2.3 运行项目
- 16.3 JAX-RS核心概念
- 16.3.1 根资源类(Root Resource Classes)
- 16.3.2 参数注解(@*Param)
- 16.3.3 子资源
- 16.4 实战:基于SSE构建实时Web应用
- 16.4.1 发布-订阅模式
- 16.4.2 广播模式
- 16.5 总 结
- 16.6 习 题
- 第17章 全双工通信——WebSocket
- 17.1 WebSocket概述
- 17.1.1 HTTP与WebSocket对比
- 17.1.2 理解WebSocket的使用场景
- 17.2 WebSocket常用API
- 17.2.1 WebSocketHandler
- 17.2.2 WebSocket握手
- 17.2.3 部署
- 17.2.4 配置
- 17.2.5 跨域处理
- 17.3 SockJS
- 17.3.1 SockJS概述
- 17.3.2 启用SockJS
- 17.3.3 心跳
- 17.3.4 客户端断开连接
- 17.3.5 CORS处理
- 17.3.6 SockJsClient
- 17.4 STOMP
- 17.4.1 STOMP概述
- 17.4.2 启用STOMP
- 17.4.3 消息流程
- 17.4.4 处理器方法
- 17.4.5 发送消息
- 17.4.6 内嵌broker
- 17.4.7 外部broker
- 17.4.8 连接到broker
- 17.4.9 认证
- 17.4.10 用户目的地
- 17.4.11 事件和拦截
- 17.4.12 STOMP客户端
- 17.4.13 WebSocket Scope
- 17.4.14 性能优化
- 17.5 实战:基于STOMP的聊天室
- 17.5.1 聊天室项目的概述
- 17.5.2 设置broker
- 17.5.3 服务端编码
- 17.5.4 客户端编码
- 17.5.5 运行
- 17.6 总 结
- 17.7 习 题
- 第18章 消息通信——JMS
- 18.1 JMS概述
- 18.1.1 常用术语
- 18.1.2 使用场景
- 18.1.3 JMS规范优势
- 18.1.4 常用技术
- 18.2 Spring JMS
- 18.2.1 JmsTemplate
- 18.2.2 连接管理
- 18.2.3 目的地管理
- 18.2.4 消息监听器容器
- 18.2.5 事务管理
- 18.3 发送消息
- 18.3.1 使用消息转换器
- 18.3.2 回调
- 18.4 接收消息
- 18.4.1 同步接收
- 18.4.2 异步接收
- 18.4.3 SessionAwareMessageListener
- 18.4.4 MessageListenerAdapter
- 18.4.5 处理事务
- 18.5 基于注解的监听器
- 18.5.1 启用基于注解的监听器
- 18.5.2 编程式端点注册
- 18.5.3 基于注解的端点方法签名
- 18.5.4 响应管理
- 18.6 JMS命名空间
- 18.7 实战:基于JMS的消息发送和接收
- 18.7.1 项目概述
- 18.7.2 配置
- 18.7.3 编码实现
- 18.7.4 运行
- 18.8 总 结
- 18.9 习 题
- 第19章 消息通知——Email
- 19.1 Email概述
- 19.1.1 Email的起源
- 19.1.2 Spring框架对于Email的支持
- 19.2 实现发送Email
- 19.2.1 MailSender和SimpleMailMessage的基本用法
- 19.2.2 JavaMailSender和MimeMessagePreparator的用法
- 19.3 使用MimeMessageHelper
- 19.3.1 发送附件和内联资源
- 19.3.2 使用模板创建Email内容
- 19.4 实战:实现Email服务器
- 19.4.1 项目概述
- 19.4.2 Email服务器编码实现
- 19.4.3 格式化Email内容
- 19.4.4 运行
- 19.5 总 结
- 19.6 习 题
- 第20章 任务执行与调度
- 20.1 任务执行与调度概述
- 20.2 TaskExecutor
- 20.2.1 TaskExecutor类型
- 20.2.2 使用TaskExecutor
- 20.3 TaskScheduler
- 20.3.1 Trigger接口
- 20.3.2 实现
- 20.4 任务调度及异步执行
- 20.4.1 启用调度注解
- 20.4.2 @Scheduled
- 20.4.3 @Async
- 20.4.4 @Async的异常处理
- 20.4.5 命名空间
- 20.5 使用Quartz Scheduler
- 20.5.1 使用JobDetailFactoryBean
- 20.5.2 使用MethodInvokingJobDetailFactoryBean
- 20.6 实战:基于Quartz Scheduler天气预报系统
- 20.6.1 项目概述
- 20.6.2 后台编码实现
- 20.6.3 运行
- 20.7 总 结
- 20.8 习 题
- 第21章 高性能之道——缓存
- 21.1 缓存概述
- 21.2 声明式缓存注解
- 21.2.1 @Cacheable
- 21.2.2 @CachePut
- 21.2.3 @CacheEvict
- 21.2.4 @Caching
- 21.2.5 @CacheConfig
- 21.2.6 启用缓存
- 21.2.7 使用自定义缓存
- 21.3 JCache
- 21.3.1 JCache注解概述
- 21.3.2 与Spring缓存注解的差异
- 21.4 基于XML的声明式缓存
- 21.5 配置缓存存储
- 21.5.1 基于JDK的缓存
- 21.5.2 基于Ehcache的缓存
- 21.5.3 基于Caffeine的缓存
- 21.5.4 基于GemFire的缓存
- 21.5.5 基于JSR-107的缓存
- 21.6 实战:基于缓存的天气预报系统
- 21.6.1 项目概述
- 21.6.2 后台编码实现
- 21.6.3 缓存配置
- 21.6.4 运行
- 21.7 总 结
- 21.8 习 题
- 第22章 微服务基石——Spring Boot
- 22.1 从单块架构到微服务架构
- 22.1.1 单块架构的概念
- 22.1.2 单块架构的优缺点
- 22.1.3 如何将单块架构进化为微服务
- 22.2 微服务设计原则
- 22.2.1 拆分足够微
- 22.2.2 轻量级通信
- 22.2.3 领域驱动原则
- 22.2.4 单一职责原则
- 22.2.5 DevOps及两个比萨
- 22.2.6 不限于技术栈
- 22.2.7 可独立部署
- 22.3 Spring Boot概述
- 22.3.1 Spring Boot产生的背景
- 22.3.2 Spring Boot的目标
- 22.3.3 Spring Boot与其他Spring应用的关系
- 22.3.4 Starter
- 22.4 实战:开启第一个Spring Boot项目
- 22.4.1 通过Spring Initializr初始化一个Spring Boot原型
- 22.4.2 用Maven编译项目
- 22.4.3 探索项目
- 22.4.4 编写REST服务
- 22.5 总 结
- 22.6 习 题
- 第23章 微服务治理框架——Spring Cloud
- 23.1 Spring Cloud概述
- 23.1.1 什么是Spring Cloud
- 23.1.2 Spring Cloud与Spring Boot的关系
- 23.2 Spring Cloud入门配置
- 23.2.1 Maven配置
- 23.2.2 Gradle配置
- 23.2.3 声明式方法
- 23.3 Spring Cloud子项目介绍
- 23.4 实战:实现微服务的注册与发现
- 23.4.1 服务发现的意义
- 23.4.2 如何集成Eureka Server
- 23.4.3 如何集成Eureka Client
- 23.4.4 实现服务的注册与发现
- 23.5 总 结
- 23.6 习 题
- 附录 本书所涉及的技术及相关版本
- 参考文献
展开全部
出版方
清华大学出版社
清华大学出版社成立于1980年6月,是由教育部主管、清华大学主办的综合出版单位。植根于“清华”这座久负盛名的高等学府,秉承清华人“自强不息,厚德载物”的人文精神,清华大学出版社在短短二十多年的时间里,迅速成长起来。清华大学出版社始终坚持弘扬科技文化产业、服务科教兴国战略的出版方向,把出版高等学校教学用书和科技图书作为主要任务,并为促进学术交流、繁荣出版事业设立了多项出版基金,逐渐形成了以出版高水平的教材和学术专著为主的鲜明特色,在教育出版领域树立了强势品牌。