赠书:Kotlin在Spring Boot中的应用
点击上方蓝色“程序猿DD”,关注我
每周福利送不停!
随着Kotlin在移动端开发的普及,它也逐步走入后端开发者的视野。Kotlin是JVM体系的语言,和Java有着良好的互操作性,上手较容易,且可以使用Java强大的生态,其还具有函数式编程的优点。另外,Spring Initializr提供了对Java、Kotlin语言的支持。
Kotlin是JetBrains公司开发的,目前流行的IntelliJ IDEA软件也是该公司开发的。IDEA对Kotlin支持较好,可以将Java代码转换为Kotlin代码。IDEA还支持Java、Kotlin混合编程,历史代码使用Java编写,新的代码可以尝试使用Kotlin编写。
本文作者袁康研究使用Kotlin、Spring Boot做后端开发,取得了不错的效果。市面上介绍使用Kotlin进行后端开发的图书和文章也比较少,袁康在大量实践的基础上,萌生了写一本书的想法,希望和更多的Java开发人员分享Kotlin在后端开发中的实践经验。
基于Kotlin的Spring Boot微服务实战一书因此而生。
本文选自书中“Kotlin在常用中间件中的应用”一章,这一章主要介绍Kotlin在常用中间件中的应用,通过示例程序,将展示Kotlin集成Spring Boot、Redis、JPA、QueryDSL、MongoDB、Spring Security、RocketMQ、Elasticsearch、Swagger的方法。读者可以掌握使用Kotlin操作常用中间件的技巧。
下面我们一起来学习了解下本章中“Kotlin集成Spring Boot”部分。
Kotlin集成Spring Boot
Spring Boot是由Pivotal团队开发的,设计的目的是简化Spring应用的初始搭建和开发过程。
Spring Boot介绍
从2014年4月发布1.0.0.RELEASE到现在的最新版本2.2.2.RELEASE,从最初的基于Spring 4到现在基于Spring 5,从同步阻塞编程到异步响应式编程,Spring Boot经历了数十个RELEASE版本,发展迅速,表现稳定,其各版本发行时间如下表。越来越多的企业在生产中使用Spring Boot进行企业级应用开发。
Spring Boot、Spring版本的发行时间
时间 | Spring Boot版本 | Spring版本 |
---|---|---|
2014年 | 1.0.x | 4.0.x.RELEASE |
2014—2015年 | 1.1.x | 4.0.x.RELEASE |
2015年 | 1.2.x | 4.1.x.RELEASE |
2015—2016年 | 1.3.x | 4.2.x.RELEASE |
2016—2017年 | 1.4.x | 4.3.x.RELEASE |
2017—2018年 | 1.5.x | 4.3.x.RELEASE |
2018—2019年 | 2.0.x | 5.0.x.RELEASE |
2018—2020年 | 2.1.x | 5.1.x.RELEASE |
2019—2020年 | 2.2.x | 5.2.x.RELEASE |
Spring Boot基于约定优于配置的思想,让开发人员不必在配置与逻辑业务之间进行思维的切换。Spring Boot简化了Spring应用的开发,不再需要XML配置文件,使用注解方式提高了开发效率。Spring Boot默认配置了很多框架的使用方式,提供starter包,简化配置,开箱即用。Spring Boot尽可能地根据项目依赖来自动配置Spring框架。Spring Boot提供了可以直接在生产环境中使用的功能,如性能指标、应用信息和应用健康检查。
Spring Boot内嵌Tomcat、Jetty、Undertow等容器,直接用Jar包的方式进行部署,而传统的Spring应用需要用war包方式进行部署。Spring Boot的部署方法非常简单,一行命令就可以部署一个Spring Boot应用;可以很方便地用Docker、Kubernetes进行部署,适用于云原生应用,使系统的扩容、运维更加方便。
Spring Boot广泛应用于企业级应用和微服务开发。Spring Cloud微服务框架就是在Spring Boot基础上开发的。此外,很多开源项目提供了Spring Boot的集成,如rocketmq- spring-boot-starter,方便用户使用。
用Kotlin开发一个Spring Boot项目
在Spring网站上创建一个基于Maven的Kotlin Spring Boot项目。填写Group、Artifact,选择依赖的包Spring Web,然后下载到本地,如图。
Spring Initializr
解压文件,用IDEA打开这个工程,可以看到pom文件如下:该pom文件定义了父依赖,通过父依赖可以自动找到dependencies中依赖包的版本号;此外,还指定了Kotlin的版本是1.3.61,Spring Boot的版本是2.2.2.RELEASE。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/ 2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">4 <modelVersion>4.0.0</modelVersion> 5 <!— 父pom,定义包的依赖 -->6 <parent> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-parent</artifactId> 9 <version>2.2.2.RELEASE</version>
10 <relativePath/> <!-- lookup parent from repository -->
11 </parent>
12 <!— 子工程相关信息 -->
13 <groupId>io.kang.example</groupId>
14 <artifactId>kolinspringboot</artifactId>
15 <version>0.0.1-SNAPSHOT</version>
16 <name>kolinspringboot</name>
17 <description>Demo project for Spring Boot</description>
18 <!— 定义属性 -->
19 <properties>
20 <java.version>1.8</java.version>
21 <kotlin.version>1.3.61</kotlin.version>
22 </properties>
23 <dependencies>
24 <!— Spring Boot启动包 -->
25 <dependency>
26 <groupId>org.springframework.boot</groupId>
27 <artifactId>spring-boot-starter</artifactId>
28 </dependency>
29 <!— Kotlin相关依赖包 -->
30 <dependency>
31 <groupId>org.jetbrains.kotlin</groupId>
32 <artifactId>kotlin-reflect</artifactId>
33 </dependency>
34 <dependency>
35 <groupId>org.jetbrains.kotlin</groupId>
36 <artifactId>kotlin-stdlib-jdk8</artifactId>
37 </dependency>
38 <dependency>
39 <groupId>org.springframework.boot</groupId>
40 <artifactId>spring-boot-starter-test</artifactId>
41 <scope>test</scope>
42 <exclusions>
43 <exclusion>
44 <groupId>org.junit.vintage</groupId>
45 <artifactId>junit-vintage-engine</artifactId>
46 </exclusion>
47 </exclusions>
48 </dependency>
49 </dependencies>
50 <build>
51 <!— Kotlin源码路径 -->
52 <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
53 <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
54 <plugins>
55 <!— Spring Boot Maven打包插件 -->
56 <plugin>
57 <groupId>org.springframework.boot</groupId>
58 <artifactId>spring-boot-maven-plugin</artifactId>
59 </plugin>
60 <!— Kotlin Maven插件 -->
61 <plugin>
62 <groupId>org.jetbrains.kotlin</groupId>
63 <artifactId>kotlin-maven-plugin</artifactId>
64 <configuration>
65 <args>
66 <arg>-Xjsr305=strict</arg>
67 </args>
68 <compilerPlugins>
69 <plugin>spring</plugin>
70 </compilerPlugins>
71 </configuration>
72 <dependencies>
73 <dependency>
74 <groupId>org.jetbrains.kotlin</groupId>
75 <artifactId>kotlin-maven-allopen</artifactId>
76 <version>${kotlin.version}</version>
77 </dependency>
78 </dependencies>
79 </plugin>
80 </plugins>
81 </build>
82 </project>
下面用Kotlin编写一个简单的Spring Boot Web应用:定义一个Spring Boot启动类,加上@SpringBootApplication注解;定义一个接口,通过http://localhost:8080/index可以访问这个接口;相关的配置放在application.yml中。
和用Java开发Spring Boot项目类似,Kotlin在main函数中启动应用,用GetMapping定义一个get接口,使用@RestController后就不用为每个方法添加@ResponseBody注解了。Kotlin的语法更加简洁。
KotlinSpringbootApplication.kt的代码如下:
1 @SpringBootApplication
2 class KotlinSpringbootApplication
3 // 主函数,启动类
4 fun main(args: Array<String>) {
5 runApplication<KotlinSpringbootApplication>(*args);
6 }
IndexController.kt的代码如下:
1 @RestController
2 class IndexController {
3 // 定义index接口
4 @GetMapping("/index")
5 fun index(): String {
6 return "Hello, Kotlin for Spring Boot!!"
7 }
8 }
通过浏览器访问“index”接口,显示“Hello,Kotlin for Spring Boot!!”。仅通过短短几行代码就开发了一个简单的Kotlin Web应用,非常便捷。
更多精彩内容欢迎大家阅读 基于Kotlin的Spring Boot微服务实战 一书。
本书专注于Kotlin在Spring Boot微服务开发中的实践,介绍了函数式编程思想、Kotlin的语法、Kotlin在常用中间件中的应用,以及其在微服务注册中心、微服务配置中心、微服务网关、Spring Cloud Alibaba、服务监控和服务链路监控方面的应用。还给出了详细的实例代码和一个完整的博客示例,可以帮助读者使用Kotlin开发基于Spring Boot微服务的程序。
抽奖赠书
截止时间:2020年12月06日 17:00
如何抽奖:扫描下方二维码,关注公众号,回复关键词 :20201201
素质二连????????????
赠书:Kotlin在Spring Boot中的应用相关推荐
- 再谈Spring Boot中的乱码和编码问题
编码算不上一个大问题,即使你什么都不管,也有很大的可能你不会遇到任何问题,因为大部分框架都有默认的编码配置,有很多是UTF-8,那么遇到中文乱码的机会很低,所以很多人也忽视了. Spring系列产品大 ...
- 【spring boot2】第8篇:spring boot 中的 servlet 容器及如何使用war包部署
嵌入式 servlet 容器 在 spring boot 之前的web开发,我们都是把我们的应用部署到 Tomcat 等servelt容器,这些容器一般都会在我们的应用服务器上安装好环境,但是 spr ...
- Spring Boot 中使用 MongoDB 增删改查
本文快速入门,MongoDB 结合SpringBoot starter-data-mongodb 进行增删改查 1.什么是MongoDB ? MongoDB 是由C++语言编写的,是一个基于分布式文件 ...
- Spring Boot 中使用@Async实现异步调用,加速任务执行!
欢迎关注方志朋的博客,回复"666"获面试宝典 什么是"异步调用"?"异步调用"对应的是"同步调用",同步调用指程序按照 ...
- 徒手解密 Spring Boot 中的 Starter自动化配置黑魔法
我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中.Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小 ...
- Maven中的profile和spring boot中的profile进行结合
2019独角兽企业重金招聘Python工程师标准>>> 有一些应用,采用了spring boot和spring boot profile.然后想把maven 中的profile和sp ...
- Spring Boot中使用JavaMailSender发送邮件
相信使用过Spring的众多开发者都知道Spring提供了非常好用的JavaMailSender接口实现邮件发送.在Spring Boot的Starter模块中也为此提供了自动化配置.下面通过实例看看 ...
- Spring Boot中Web应用的统一异常处理
为什么80%的码农都做不了架构师?>>> 我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛 ...
- 解决Spring boot中读取属性配置文件出现中文乱码的问题
解决Spring boot中读取属性配置文件出现中文乱码的问题 参考文章: (1)解决Spring boot中读取属性配置文件出现中文乱码的问题 (2)https://www.cnblogs.com/ ...
最新文章
- Python递归实现快速排序
- php7-sapnwrfc
- 条理清晰的搭建SSH环境
- SAP UI5 里如何让每次视图显示时都执行某方法
- 【渝粤题库】国家开放大学2021春1366英语教学理论与实践题目
- 知识图谱入门知识(五)【转】秒懂词向量Word2Vec的本质
- aix mysql日志,一次AIX 操作系统ASM添加磁盘的操作日志
- 自学python考哪些证书-Python自学难吗?有哪些课程内容?
- vim中自动格式化代码
- centos安装activitymq
- 计算机考研用python_计算机考研408 130+个人攻略
- Hadoop学习(二)---Secondary结点的配置以及HDFS的常用命令以及API的使用
- U盘快捷方式病毒查杀
- [BZOJ3772]精神污染 主席树上树+欧拉序
- electron+vue3+vite2 如何使用打印
- 七夕快到了,中国人自己的情人节,恋爱中的情人们怎么过呢
- [C程序设计]输出所有的“水仙花数”。
- 搭建SSH,SSZ架构需注意数据库的编码问题
- 07年五大BT网站排行榜 - 电影、音乐还有传票
- dos命令行choice命令使用详解