《 Kotlin + Spring Boot : 下一代 Java 服务端开发 》
Kotlin + Spring Boot : 下一代 Java 服务端开发
第 O 部门 快速开始
[第1章 Kotlin + Spring Boot 快速开始 Hello World]()
1.1 环境准备:JDK,Gradle,IDEA
1.2 快速上手:Kotlin + Spring Boot 实现一个 Restful Hello World[第2章 Spring Boot 企业级服务开发:从 Java 到 Kotlin]()
2.1 Java语言的缺点
2.1.1 Java 发展历程2.1.2 Java 的缺点2.2 为什么是 Kotlin
2.2.1 Kotlin 产生的背景2.2.2 Kotlin 解决了哪些问题2.3 为什么是 Spring Boot
2.4 Spring 的发展历程2.5 Spring IOC2.6 Spring 容器2.7 Spring 的配置地狱2.8 Spring Boot 是什么2.9 从 Spring 到 Spring Boot2.10 下一代企业级服务开发:Kotlin + Spring Boot2.11 Kotlin 在 Android 移动开发领域势不可挡第一部分 Kotlin 语言基础
[第3章 Kotlin 语言简介]()
3.1 Kotlin 是什么
3.2 Kotlin 目标平台3.2.1 JVM3.2.2 Android3.2.3 Browser3.2.4 Native3.3 Why Kotlin?
3.4 Kotlin 发展简史3.5 Kotlin 的主要特征
3.5.1 简洁:大幅减少样板代码的数量3.5.2 安全:避免空指针异常等错误3.5.3 互操作:为JVM,Android和浏览器利用现有的库3.5.4 工具型:选择任意的Java IDE或命令行构建3.6 Kotlin 的编程哲学:务实、极简、安全、互操作
3.7 Kotlin 编程工具[第4章 可空类型与安全操作符]()
4.1 空指针异常
4.2 什么是可空类型4.3 为什么引入可空类型4.4 安全调用运算符4.5 类型转换4.6 基本数据类型与类型系统[第5章 类与面向对象编程]()
5.1 面向对象简史与编程思想
5.2 声明类和接口5.3 抽象类与接口5.4 object 单例对象类型5.5 数据类5.6 注解类型5.7 枚举类型5.8 内部类[第6章 一等函数支持(FP):高阶函数与 Lambda 表达式]()
6.1 声明函数
6.2 函数的组合:高阶函数6.3 Lambda 表达式6.4 带接收者的 Lambda6.5 递归与 Y 组合子[第7章 集合类]()
7.1 集合类简介
7.2 不可变集合类7.3 可变集合类7.4 集合类的 Stream API7.5 惰性序列:Sequence[第8章 泛型]()
8.1 为何引入泛型
8.2 在类、接口和函数上使用泛型8.3 协变与逆变8.4 类型擦除[第9章 扩展函数与委托]()
9.1 扩展函数
9.2 扩展属性9.3 扩展中的this关键字9.4 类委托9.5 属性委托[第10章 创建自己的 DSL]()
10.1 什么是DSL
10.2 Kotlin的DSL特性支持10.3 实现一个http ajax请求的DSL[第11章 元编程与注解、反射]()
11.1 元编程简介
11.2 为什么要使用注解跟反射11.3 声明注解与处理注解11.4 反射的原理11.5 使用反射获取泛型信息[第12章 轻量级线程:协程]()
12.1 协程的概念
12.2 为什么使用协程12.2 创建协程12.3 挂起函数12.4 协程与线程比较第二部分 Spring Boot 框架介绍
[第13章 Spring Boot 简介]()
13.1 从 XML 中逃离:Spring JavaConfig
13.2 Spring 3 新特性13.3 Spring 4 与 Spring Boot13.4 Spring Boot 解放 Spring的配置 14.5 SpringBoot 核心模块13.6 Spring Boot Actuator13.7 Spring Boot 与微服务[第14章 常用 Spring Boot Starter ]()
14.1 常用 Spring Boot Starter的介绍
基础起步依赖 Spring Boot Starter测试起步依赖 Spring Boot Test StarterWeb 开发起步依赖 Spring Boot Web Starter模板引擎起步依赖 FreeMarker Starter 与 Thymeleaf Starter数据库 ORM 层起步依赖 Spring Boot Data JPA Starter 与 Mybatis Spring Boot Starter权限与安全起步依赖 Spring Boot Security StarterWebSocket编程起步依赖 Spring Boot WebSocket Starter邮件模块起步依赖 Spring Boot Mail Starter日志功能起步依赖 Spring Boot Logging StarterServlet 容器起步依赖 Tomcat Starter 与 Jetty StarterAOP 编程起步依赖 Spring Boot AOP Starter数据校验起步依赖 Spring Boot Validation StarterRedis 起步依赖 Spring Boot Data Redis StarterMongoDB 起步依赖 Spring Boot Data MongoDB StarterREST 起步依赖 Spring Boot Data REST Starter缓存Cache 起步依赖 Spring Boot Cache StarterActuator起步依赖 Spring Boot Actuator StarterSpring Cloud 起步依赖 Spring Cloud StarterEureka起步依赖 Spring Cloud Starter EurekaOauth2起步依赖 Spring Cloud Starter Oauth2[第15章 Spring Boot AutoConfigure自动配置原理]()
15.1 什么是 AutoConfigure
15.2 Spring Boot 怎样实现自动配置15.2.1 SpringApplication 类15.2.2 使用 Fluent Builder API 构建 SpringApplication 类15.2.3 @EnableAutoConfiguration自动配置原理15.3 Spring Boot 默认配置约定 15.4 FreeMarkerAutoConfiguration自动配置的实例分析15.5 应用启动初始化 CommandLineRunner[第16章 实现一个自己的 Spring Boot Starter]()
16.1 新建自定义的 Starter 工程
16.2 创建自动配置类 MyAutoConfiguration16.3 @Configuration 配置系列注解
@ConfigurationProperties 注解@EnableConfigurationProperties 注解16.4 @ConditionalOn 条件装配系列注解
@ConditionalOnClass:当类路径下有指定的类的条件下@ConditionalOnProperty:指定的属性是否有指定的值 @ConditionalOnBean:当容器中有指定的Bean的条件下 @ConditionalOnExpression:基于SpEL表达式作为判断条件 @ConditionalOnJava:基于JVM版本作为判断条件 @ConditionalOnJndi:在JNDI存在的条件下查找指定的位置 @ConditionalOnMissingBean:当容器中没有指定Bean的情况下 @ConditionalOnMissingClass:当类路径下没有指定的类的条件下 @ConditionalOnNotWebApplication:当前项目不是Web项目的条件下 @ConditionalOnResource:类路径下是否有指定的资源 @ConditionalOnSingleCandidate:当指定的Bean在容器中只有一个,或者在有多个Bean的情况下,用来指定首选的Bean @ConditionalOnWebApplication:当前项目是Web项目的条件下16.5 编写服务实现类
16.6 注册配置自动配置类@ImportAutoConfiguration 注解16.7 将上面构建的starter安装到本地16.8 新建spring boot项目依赖上面的 starter16.9 添加属性到application.properties配置文件中16.10 编写测试代码[ 第17章 Spring 5 内置的 Kotlin 函数式编程风格 ]()
17.1 Spring Framework 5.0 新特性
17.2 内置的 Kotlin 函数式编程风格17.3 使用 Spring WebFlux 进行响应式编程第三部分 综合实战
[第18章 Kotlin 与 Spring Boot 使用 JUnit 进行单元测试]()
18.1 为什么要进行测试
18.2 JUnit 框架简介18.3 @RunWith 注解18.4 @SpringBootTest 注解18.5 SpringRunner 类18.6 使用 Mockito 进行 Mock 测试18.6.1 Mocking 与 Spying Beans18.6.2 使用@WebMvcTest与@MockBean 来测试 Controller 代码18.7 使用HTMLUnit的 WebClient来进行 Web 页面的测试[第19章 Kotlin 与 Spring Boot 数据层ORM 框架集成]()
19.1 Spring Data JPA 简介19.2 Kotlin 与 Spring Boot 集成 Spring Data JPA19.2.1 使用 Spring Boot Data JPA Starter 起步依赖集成19.2.2 配置数据源19.2.3 配置 JPA 属性:spring.jpa.hibernate.ddl-auto19.2.4 创建 Entity19.2.5 实现 Repository 接口函数
CrudRepository PagingAndSortingRepository JpaRepository19.3 分页与排序
19.3.1 排序 Sort 类型19.3.2 分页相关的类型 Pageable、PageRequest 与 Page19.4 自定义 Dto 映射到多表关联查询结果
19.5 JPA 集成 QueryDSL19.6 MyBatis简介
19.7 使用 mybatis-spring-boot-starter 集成19.8 在 application.properties 中配置 mybatis19.9 手动实现 TransactionManagementConfigurer 方式集成19.10 集成 MyBatis Generator19.11 分页插件 PageHelper19.12 通用 Mapper 集成19.13 使用@Provider 注解配置 Mapper[ 第20章 Kotlin 与 Spring Boot 集成 Spring MVC 进行 Web 应用开发]()
20.1 MVC 三层模型
20.2 基于注解的 Controller20.2.1 @Controller 注解20.2.2 数据视图模型: Model 与 ModelAndView20.2.3 REST 接口@RestController20.2.4 URL 路径映射 @RequestMapping20.2.5 @ResponseBody20.2.6 数据的生产和消费:consumes 、produces20.2.7 @PathVariable 与 @RequestParam20.3 数据绑定
20.3.1 @ModelAttribute 注解20.3.2 @InitBinder 注解与 WebDataBinder20.3.3 BindingResult20.3.4 数据绑定流程20.4 数据类型转换器 Converter
20.4.1 消息转换器 HttpMessageConverter20.4.2 自定义日期类型格式转换器20.4.3 实现 ConversionService 接口20.5 数据校验
20.5.1 JSR-30320.5.2 使用 @Validated 注解20.5.3 实现 Validator 校验器20.6 表达式语言 SPEL
20.7 上传与下载文件:Multipart File20.8 异常处理: @ControllerAdvice 与 @ExceptionHandler[第21章 Kotlin 与 Spring Boot 集成 Spring WebFlux 进行响应式 Web 应用开发]()
21.1 响应式宣言
21.2 Spring 5 响应式Web框架架构图21.3 Router Functions21.4 核心组件 WebFlux21.5 Reactive Streams21.6 示例工程详解21.6.1 Mono 类21.6.2 服务端响应 ServerResponse21.6.3 路由函数 RouterFunction21.6.4 处理函数 HandlerFunction21.6.5 测试输出[第22章 Kotlin 与 Spring Boot 视图层模板引擎集成 ]()
22.1 Freemarker 基础语法
22.2 FreeMarkerAutoConfiguration22.3 Kotlin 与 Spring Boot 集成 Freemarker 模板引擎22.4 Thymeleaf 基础语法
22.5 ThymeleafAutoConfiguration22.6 Kotlin 与 Spring Boot 集成 Thymeleaf 模板引擎[第23章 Kotlin 与 Spring Boot 权限与安全集成 ]()
23.1 Spring Security 是什么
23.2 使用 Spring Boot Security Starter 集成23.3 Spring Boot Security 的基本配置23.4 初级 Security: 默认认证用户名密码
23.4.1 WebMvcConfigurer23.4.2 AuthenticationManager23.5 中级 Security:内存用户名密码认证
23.5.1 httpBasic23.5.2 formLogin23.5.3 角色权限控制23.5.4 获取当前登录认证通过的用户信息23.5.5 注册 Servlet、Filter、Listener 等Bean23.6 高级 Security: 用数据库存储用户和角色,实现安全认证
23.6.1 用户、角色及其关联关系的表实体类:User,Role,UserRole23.6.2 继承 WebSecurityConfigurerAdapter 配置Spring Security23.6.3 从数据库中获取用户信息:UserDetailsService23.6.4 配置错误处理页面23.6.5 测试运行23.7 Shiro 是什么
23.8 Kotlin 与 Spring Boot 集成 Shiro 配置步骤23.9 使用 HashedCredentialsMatcher 对密码进行编码23.10 使用 ShiroRealm 来处理用户的认证和权限23.11 使用 SecurityManager 进行权限的管理[第24章 Kotlin 与 Spring Boot 定时任务集成 Spring Scheduling]()
24.1 直接使用@Scheduled实现静态定时任务
24.2 实现 SchedulingConfigurer 接口完成动态定时任务[第25章 Kotlin 与 Spring Boot 批量任务集成 Spring Batch]()
[第26章 Kotlin 与 Spring Boot 全文搜索引擎集成 ElasticSearch]()
[第27章 Kotlin 与 Spring Boot 消息中间件集成 Kafka]()
27.1 Kafka 配置
27.2 发送 Message27.3 接收 Message[第28章 Kotlin 与 Spring Boot 缓存集成 Redis]()
[第29章 Kotlin 与 Spring Boot 日志集成 sl4j]()
29.1 配置 application.properties29.2 logback-spring.xml 文件详解[第30章 Kotlin 与 Spring Boot 邮件功能集成]()
[第31章 Kotlin 与 Spring Boot 集成 Swagger2 自动化API管理]()
31.1 Swagger2 动化 API 管理
31.2 Kotlin 与 Spring Boot 集成 Swagger2 步骤31.2.1 添加工程依赖31.2.2 配置Swagger的Docket Bean31.2.3 继承WebMvcConfigurerAdapter 重写 addResourceHandlers 函数31.2.4 在Controller上面的使用 Swagger2 的@Api 注解31.2.5 启用Swagger2配置注解 @EnableSwagger231.3 运行测试[第32章 Kotlin + Spring Boot 与 Spring Cloud 微服务实践]()
[第33章 使用 Actuator 进行应用监控 ]()
33.1 Endpoints 介绍
33.2 设置 Endpoints 安全权限33.3 实现自定义的 Endpoints[第34章 Spring Boot 应用的部署与运维 ]()
34.1 应用打包成可执行的 jar 包
34.2 应用打包成可部署的 war 包34.3 @Profile 注解与多环境部署附录:
application.properties
详见官网文档:Appendix A. Common application properties
II. Auto-configuration classes
Appendix C. Auto-configuration classes
III. Test auto-configuration annotations
Appendix D. Test auto-configuration annotations参考资料
Kotlin 1.2.0 新特性:
Spring Boot 与 微服务:
SpringBoot 自动配置原理:
自定义 Spring Boot Starter :
Spring 5 新特性:
Spring Boot集成Spring Security:
SpringBoot + Shiro 整合 登录认证和权限控制:
SpringBoot SpringMVC实现文件下载:
Spring Boot 集成日志 logging sl4j:
Spring Boot配置文件-多环境配置:
SpringBoot官网文档:
Spring Data JPA:
spring-data-jpa-with-querydsl:
SpringBoot 集成 MyBatis:
Spring MVC 消息转换器:
SpringMVC之类型转换Converter:SpringMVC 数据绑定流程
Spring Boot集成Swagger2构建自动化Rest API文档:
参考书籍:
《Kotlin 实战》
《Kotlin 极简教程》《Spring 实战》《Java 编程思想》《Effective Java》《Java 核心技术 I/II》《Spring MVC 学习指南》《 Kotlin + Spring Boot : 下一代 Java 服务端开发 》