《 Kotlin + Spring Boot : 下一代 Jav

作者: 光剑书架上的书 | 来源:发表于2017-11-13 19:25 被阅读3616次

    《 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 IOC
    2.6 Spring 容器
    2.7 Spring 的配置地狱
    2.8 Spring Boot 是什么
    2.9 从 Spring 到 Spring Boot
    2.10 下一代企业级服务开发:Kotlin + Spring Boot
    2.11 Kotlin 在 Android 移动开发领域势不可挡

    第一部分 Kotlin 语言基础

    第3章 Kotlin 语言简介

    3.1 Kotlin 是什么
    3.2 Kotlin 目标平台
    3.2.1 JVM
    3.2.2 Android
    3.2.3 Browser
    3.2.4 Native

    3.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 带接收者的 Lambda
    6.5 递归与 Y 组合子

    第7章 集合类

    7.1 集合类简介
    7.2 不可变集合类
    7.3 可变集合类
    7.4 集合类的 Stream API
    7.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 Boot
    13.4 Spring Boot 解放 Spring的配置
    14.5 SpringBoot 核心模块
    13.6 Spring Boot Actuator
    13.7 Spring Boot 与微服务

    第14章 常用 Spring Boot Starter

    14.1 常用 Spring Boot Starter的介绍
    基础起步依赖 Spring Boot Starter
    测试起步依赖 Spring Boot Test Starter
    Web 开发起步依赖 Spring Boot Web Starter
    模板引擎起步依赖 FreeMarker Starter 与 Thymeleaf Starter
    数据库 ORM 层起步依赖 Spring Boot Data JPA Starter 与 Mybatis Spring Boot Starter
    权限与安全起步依赖 Spring Boot Security Starter
    WebSocket编程起步依赖 Spring Boot WebSocket Starter
    邮件模块起步依赖 Spring Boot Mail Starter
    日志功能起步依赖 Spring Boot Logging Starter
    Servlet 容器起步依赖 Tomcat Starter 与 Jetty Starter
    AOP 编程起步依赖 Spring Boot AOP Starter
    数据校验起步依赖 Spring Boot Validation Starter
    Redis 起步依赖 Spring Boot Data Redis Starter
    MongoDB 起步依赖 Spring Boot Data MongoDB Starter
    REST 起步依赖 Spring Boot Data REST Starter
    缓存Cache 起步依赖 Spring Boot Cache Starter
    Actuator起步依赖 Spring Boot Actuator Starter
    Spring Cloud 起步依赖 Spring Cloud Starter
    Eureka起步依赖 Spring Cloud Starter Eureka
    Oauth2起步依赖 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 创建自动配置类 MyAutoConfiguration

    16.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项目依赖上面的 starter
    16.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 Beans
    18.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 JPA
    19.2.1 使用 Spring Boot Data JPA Starter 起步依赖集成
    19.2.2 配置数据源
    19.2.3 配置 JPA 属性:spring.jpa.hibernate.ddl-auto
    19.2.4 创建 Entity

    19.2.5 实现 Repository 接口函数
    CrudRepository
    PagingAndSortingRepository
    JpaRepository

    19.3 分页与排序
    19.3.1 排序 Sort 类型
    19.3.2 分页相关的类型 Pageable、PageRequest 与 Page

    19.4 自定义 Dto 映射到多表关联查询结果
    19.5 JPA 集成 QueryDSL

    19.6 MyBatis简介
    19.7 使用 mybatis-spring-boot-starter 集成
    19.8 在 application.properties 中配置 mybatis
    19.9 手动实现 TransactionManagementConfigurer 方式集成
    19.10 集成 MyBatis Generator
    19.11 分页插件 PageHelper
    19.12 通用 Mapper 集成
    19.13 使用@Provider 注解配置 Mapper

    第20章 Kotlin 与 Spring Boot 集成 Spring MVC 进行 Web 应用开发

    20.1 MVC 三层模型
    20.2 基于注解的 Controller
    20.2.1 @Controller 注解
    20.2.2 数据视图模型: Model 与 ModelAndView
    20.2.3 REST 接口@RestController
    20.2.4 URL 路径映射 @RequestMapping
    20.2.5 @ResponseBody
    20.2.6 数据的生产和消费:consumes 、produces
    20.2.7 @PathVariable 与 @RequestParam

    20.3 数据绑定
    20.3.1 @ModelAttribute 注解
    20.3.2 @InitBinder 注解与 WebDataBinder
    20.3.3 BindingResult
    20.3.4 数据绑定流程

    20.4 数据类型转换器 Converter
    20.4.1 消息转换器 HttpMessageConverter
    20.4.2 自定义日期类型格式转换器
    20.4.3 实现 ConversionService 接口

    20.5 数据校验
    20.5.1 JSR-303
    20.5.2 使用 @Validated 注解
    20.5.3 实现 Validator 校验器

    20.6 表达式语言 SPEL
    20.7 上传与下载文件:Multipart File
    20.8 异常处理: @ControllerAdvice 与 @ExceptionHandler

    第21章 Kotlin 与 Spring Boot 集成 Spring WebFlux 进行响应式 Web 应用开发

    21.1 响应式宣言
    21.2 Spring 5 响应式Web框架架构图
    21.3 Router Functions
    21.4 核心组件 WebFlux
    21.5 Reactive Streams
    21.6 示例工程详解
    21.6.1 Mono 类
    21.6.2 服务端响应 ServerResponse
    21.6.3 路由函数 RouterFunction
    21.6.4 处理函数 HandlerFunction
    21.6.5 测试输出

    第22章 Kotlin 与 Spring Boot 视图层模板引擎集成

    22.1 Freemarker 基础语法
    22.2 FreeMarkerAutoConfiguration
    22.3 Kotlin 与 Spring Boot 集成 Freemarker 模板引擎

    22.4 Thymeleaf 基础语法
    22.5 ThymeleafAutoConfiguration
    22.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 WebMvcConfigurer
    23.4.2 AuthenticationManager

    23.5 中级 Security:内存用户名密码认证
    23.5.1 httpBasic
    23.5.2 formLogin
    23.5.3 角色权限控制
    23.5.4 获取当前登录认证通过的用户信息
    23.5.5 注册 Servlet、Filter、Listener 等Bean

    23.6 高级 Security: 用数据库存储用户和角色,实现安全认证
    23.6.1 用户、角色及其关联关系的表实体类:User,Role,UserRole
    23.6.2 继承 WebSecurityConfigurerAdapter 配置Spring Security
    23.6.3 从数据库中获取用户信息:UserDetailsService
    23.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 发送 Message
    27.3 接收 Message

    第28章 Kotlin 与 Spring Boot 缓存集成 Redis

    第29章 Kotlin 与 Spring Boot 日志集成 sl4j
    29.1 配置 application.properties
    29.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 Bean
    31.2.3 继承WebMvcConfigurerAdapter 重写 addResourceHandlers 函数
    31.2.4 在Controller上面的使用 Swagger2 的@Api 注解
    31.2.5 启用Swagger2配置注解 @EnableSwagger2
    31.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 注解与多环境部署

    附录:

    I. application.properties
    详见官网文档:Appendix A. Common application properties

    https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-spring-application

    II. Auto-configuration classes

    Appendix C. Auto-configuration classes

    III. Test auto-configuration annotations
    Appendix D. Test auto-configuration annotations


    参考资料

    Kotlin 1.2.0 新特性:
    https://github.com/JetBrains/kotlin/blob/1.2.0/ChangeLog.md

    Spring Boot 与 微服务:

    http://www.infoq.com/cn/articles/microframeworks1-spring-boot

    http://blog.csdn.net/zeb_perfect/article/details/51945350

    SpringBoot 自动配置原理:http://www.jianshu.com/p/ccadc2bdb6d7

    自定义 Spring Boot Starter :

    http://blog.csdn.net/liuchuanhong1/article/details/55057135
    http://www.jianshu.com/p/45538b44e04e
    http://www.jianshu.com/p/85460c1d835a

    Spring 5 新特性:

    https://www.oschina.net/translate/whats-new-in-spring-framework-5

    Spring Boot集成Spring Security:

    http://www.jianshu.com/p/08cc28921fd0

    SpringBoot + Shiro 整合 登录认证和权限控制:

    http://www.jianshu.com/p/672abf94a857?winzoom=1
    http://shiro.apache.org/
    https://segmentfault.com/a/1190000008847948
    https://www.cnblogs.com/hlhdidi/p/6376457.html
    http://blog.csdn.net/u012373815/article/details/57532292
    http://412887952-qq-com.iteye.com/blog/2299732

    SpringBoot SpringMVC实现文件下载:
    http://www.jianshu.com/p/cc31a4da2d64

    Spring Boot 集成日志 logging sl4j:
    http://www.jianshu.com/p/666ed3be3aee

    spring boot内置tomcat设置虚拟目录

    Spring Boot配置文件-多环境配置: https://www.cnblogs.com/winner-0715/p/6754994.html?utm_source=itdadao&utm_medium=referral

    SpringBoot官网文档:

    http://projects.spring.io/spring-boot/

    https://pivotal.io/spring-app-framework#buildanything

    https://pivotal.io/

    http://projects.spring.io/

    http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/

    Spring Data JPA:

    https://projects.spring.io/spring-data-jpa/#quick-start

    spring-data-jpa-with-querydsl:

    http://dontpanic.42.nl/2011/06/spring-data-jpa-with-querydsl.html
    http://www.jianshu.com/p/2b68af9aa0f5

    SpringBoot 集成 MyBatis:

    http://blog.csdn.net/isea533/article/details/50359390
    https://github.com/EasySpringBoot/MyBatis-Spring-Boot

    Spring MVC 消息转换器:
    http://www.jianshu.com/p/2f633cb817f5
    http://blog.csdn.net/qwe6112071/article/details/51056781
    http://jinnianshilongnian.iteye.com/blog/1723270
    SpringMVC之类型转换Converter:
    http://blog.csdn.net/renhui999/article/details/9837897

    SpringMVC 数据绑定流程
    http://www.cnblogs.com/rocky-AGE-24/p/5224205.html

    Spring Boot集成Swagger2构建自动化Rest API文档:

    http://www.jianshu.com/p/be05aa96fd29

    参考书籍:

    《Kotlin 实战》
    《Kotlin 极简教程》
    《Spring 实战》
    《Java 编程思想》
    《Effective Java》
    《Java 核心技术 I/II》
    《Spring MVC 学习指南》

    相关文章

      网友评论

      本文标题:《 Kotlin + Spring Boot : 下一代 Jav

      本文链接:https://www.haomeiwen.com/subject/ynftvxtx.html