《 Kotlin + Spring Boot : 下一代 Java 服务端开发 》

简介: 《 Kotlin + Spring Boot : 下一代 Java 服务端开发 》Kotlin + Spring Boot : 下一代 Java 服务端开发第 O 部门 快速开始第1章 Kotlin + Spring Boot 快速开始 Hello World1.

《 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 学习指南》

相关文章
|
24天前
|
缓存 前端开发 Java
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
Soring Boot的起步依赖、启动流程、自动装配、常用的注解、Spring MVC的执行流程、对MVC的理解、RestFull风格、为什么service层要写接口、MyBatis的缓存机制、$和#有什么区别、resultType和resultMap区别、cookie和session的区别是什么?session的工作原理
【Java面试题汇总】Spring,SpringBoot,SpringMVC,Mybatis,JavaWeb篇(2023版)
|
24天前
|
缓存 Java 数据库
【Java面试题汇总】Spring篇(2023版)
IoC、DI、aop、事务、为什么不建议@Transactional、事务传播级别、@Autowired和@Resource注解的区别、BeanFactory和FactoryBean的区别、Bean的作用域,以及默认的作用域、Bean的生命周期、循环依赖、三级缓存、
【Java面试题汇总】Spring篇(2023版)
|
3天前
|
缓存 NoSQL Java
Springboot自定义注解+aop实现redis自动清除缓存功能
通过上述步骤,我们不仅实现了一个高度灵活的缓存管理机制,还保证了代码的整洁与可维护性。自定义注解与AOP的结合,让缓存清除逻辑与业务逻辑分离,便于未来的扩展和修改。这种设计模式非常适合需要频繁更新缓存的应用场景,大大提高了开发效率和系统的响应速度。
14 2
|
14天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
622 7
|
25天前
|
Java 数据库连接 API
【Java笔记+踩坑】Spring Data JPA
从常用注解、实体类和各层编写方法入手,详细介绍JPA框架在增删改查等方面的基本用法,以及填充用户名日期、分页查询等高级用法。
【Java笔记+踩坑】Spring Data JPA
|
25天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
2月前
|
IDE Java 开发工具
快速上手指南:如何用Spring Boot开启你的Java开发之旅?
【8月更文挑战第22天】Spring Boot由Pivotal团队开发,简化了Spring应用的创建过程。本文详述了从零开始搭建Spring Boot项目的步骤:首先确保安装了新版JDK、Maven/Gradle及IDE如IntelliJ IDEA或Eclipse;接着访问Spring Initializr网站(start.spring.io),选择所需依赖(如Web模块)并生成项目;最后,使用IDE打开生成的项目,添加`@SpringBootApplication`注解及main方法来启动应用。通过这些步骤,即便是新手也能快速上手,专注于业务逻辑的实现。
34 1
|
2月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
32 0
|
2月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
33 0
|
2月前
|
安全 Java 开发者
Java反射:Spring Boot背后的魔法,让你的代码质量飞跃的神秘力量!
【8月更文挑战第29天】Java反射机制允许程序在运行时访问和修改类、接口、方法等属性,而Spring Boot则广泛应用反射实现依赖注入和自动配置。本文探讨如何利用反射机制提升Spring Boot应用的代码质量,包括动态类型处理、元数据访问及依赖注入等方面。通过实战示例展示动态调用方法和自定义注解处理,强调反射机制对代码灵活性与扩展性的贡献,同时提醒开发者注意性能和安全问题。
51 0
下一篇
无影云桌面