干货丨Kotlin在Spring Boot中的应用

发布时间:2022-10-11 09:30

 

随着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在Spring Boot中的应用_第1张图片

 

本文选自书中“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版本的发行时间

干货丨Kotlin在Spring Boot中的应用_第2张图片

 

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,然后下载到本地,如图。

干货丨Kotlin在Spring Boot中的应用_第3张图片

 

Spring Initializr

解压文件,用IDEA打开这个工程,可以看到pom文件如下:该pom文件定义了父依赖,通过父依赖可以自动找到dependencies中依赖包的版本号;此外,还指定了Kotlin的版本是1.3.61,Spring Boot的版本是2.2.2.RELEASE。

 1    
 2  
 4      4.0.0  
 5      
 6        
 7          org.springframework.boot  
 8          spring-boot-starter-parent  
 9          2.2.2.RELEASE  
10             
11        
12      
13      io.kang.example  
14      kolinspringboot  
15      0.0.1-SNAPSHOT  
16      kolinspringboot  
17      Demo project for Spring Boot  
18      
19        
20          1.8  
21          1.3.61  
22        
23        
24           
25            
26              org.springframework.boot  
27              spring-boot-starter  
28            
29           
30            
31              org.jetbrains.kotlin  
32              kotlin-reflect  
33            
34            
35              org.jetbrains.kotlin  
36              kotlin-stdlib-jdk8  
37            
38            
39              org.springframework.boot  
40              spring-boot-starter-test  
41              test  
42                
43                    
44                      org.junit.vintage  
45                      junit-vintage-engine  
46                    
47                
48            
49        
50        
51           
52          ${project.basedir}/src/main/kotlin  
53          ${project.basedir}/src/test/kotlin
54            
55               
56                
57                  org.springframework.boot  
58                  spring-boot-maven-plugin  
59               
60               
61                
62                  org.jetbrains.kotlin  
63                 kotlin-maven-plugin  
64                    
65                        
66                          -Xjsr305=strict  
67                        
68                        
69                          spring  
70                        
71                    
72                    
73                        
74                          org.jetbrains.kotlin  
75                          kotlin-maven-allopen  
76                          ${kotlin.version}  
77                        
78                    
79                
80            
81        
82    

下面用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) {  
5      runApplication(*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中的应用_第4张图片

 

本书专注于Kotlin在Spring Boot微服务开发中的实践,介绍了函数式编程思想、Kotlin的语法、Kotlin在常用中间件中的应用,以及其在微服务注册中心、微服务配置中心、微服务网关、Spring Cloud Alibaba、服务监控和服务链路监控方面的应用。还给出了详细的实例代码和一个完整的博客示例,可以帮助读者使用Kotlin开发基于Spring Boot微服务的程序。

干货丨Kotlin在Spring Boot中的应用_第5张图片

 

热文推荐

  • 算数or算卦,和业务人谈“预测”到底在谈啥?

  • Python之父加入微软,一开口就知道是老“凡学家”了

  • 秒懂商用区块链关键技术:智能合约

  • 演说泰斗加尔·雷纳德亲自解读《演说之禅》的奥秘

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号