当前位置:   article > 正文

赠书:Kotlin在Spring Boot中的应用

kotlin+spring boot+maven

点击上方蓝色“程序猿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.x4.0.x.RELEASE
2014—2015年1.1.x4.0.x.RELEASE
2015年1.2.x4.1.x.RELEASE
2015—2016年1.3.x4.2.x.RELEASE
2016—2017年1.4.x4.3.x.RELEASE
2017—2018年1.5.x4.3.x.RELEASE
2018—2019年2.0.x5.0.x.RELEASE
2018—2020年2.1.x5.1.x.RELEASE
2019—2020年2.2.x5.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.  1  <?xml version="1.0" encoding="UTF-8"?>  
  2.  2  <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/ 2001/XMLSchema-instance"  
  3.  3      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4.  4      <modelVersion>4.0.0</modelVersion>  
  5.  5      <!— 父pom,定义包的依赖 -->
  6.  6      <parent>  
  7.  7          <groupId>org.springframework.boot</groupId>  
  8.  8          <artifactId>spring-boot-starter-parent</artifactId>  
  9.  9          <version>2.2.2.RELEASE</version>  
  10. 10          <relativePath/> <!-- lookup parent from repository -->  
  11. 11      </parent>  
  12. 12      <!— 子工程相关信息 -->
  13. 13      <groupId>io.kang.example</groupId>  
  14. 14      <artifactId>kolinspringboot</artifactId>  
  15. 15      <version>0.0.1-SNAPSHOT</version>  
  16. 16      <name>kolinspringboot</name>  
  17. 17      <description>Demo project for Spring Boot</description>  
  18. 18      <!— 定义属性 -->
  19. 19      <properties>  
  20. 20          <java.version>1.8</java.version>  
  21. 21          <kotlin.version>1.3.61</kotlin.version>  
  22. 22      </properties>  
  23. 23      <dependencies>  
  24. 24           <!— Spring Boot启动包 -->
  25. 25          <dependency>  
  26. 26              <groupId>org.springframework.boot</groupId>  
  27. 27              <artifactId>spring-boot-starter</artifactId>  
  28. 28          </dependency>  
  29. 29           <!— Kotlin相关依赖包 -->
  30. 30          <dependency>  
  31. 31              <groupId>org.jetbrains.kotlin</groupId>  
  32. 32              <artifactId>kotlin-reflect</artifactId>  
  33. 33          </dependency>  
  34. 34          <dependency>  
  35. 35              <groupId>org.jetbrains.kotlin</groupId>  
  36. 36              <artifactId>kotlin-stdlib-jdk8</artifactId>  
  37. 37          </dependency>  
  38. 38          <dependency>  
  39. 39              <groupId>org.springframework.boot</groupId>  
  40. 40              <artifactId>spring-boot-starter-test</artifactId>  
  41. 41              <scope>test</scope>  
  42. 42              <exclusions>  
  43. 43                  <exclusion>  
  44. 44                      <groupId>org.junit.vintage</groupId>  
  45. 45                      <artifactId>junit-vintage-engine</artifactId>  
  46. 46                  </exclusion>  
  47. 47              </exclusions>  
  48. 48          </dependency>  
  49. 49      </dependencies>  
  50. 50      <build>  
  51. 51           <!— Kotlin源码路径 -->
  52. 52          <sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>  
  53. 53          <testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
  54. 54          <plugins>  
  55. 55               <!— Spring Boot Maven打包插件 -->
  56. 56              <plugin>  
  57. 57                  <groupId>org.springframework.boot</groupId>  
  58. 58                  <artifactId>spring-boot-maven-plugin</artifactId>  
  59. 59              </plugin> 
  60. 60               <!— Kotlin Maven插件 -->
  61. 61              <plugin>  
  62. 62                  <groupId>org.jetbrains.kotlin</groupId>  
  63. 63                 <artifactId>kotlin-maven-plugin</artifactId>  
  64. 64                  <configuration>  
  65. 65                      <args>  
  66. 66                          <arg>-Xjsr305=strict</arg>  
  67. 67                      </args>  
  68. 68                      <compilerPlugins>  
  69. 69                          <plugin>spring</plugin>  
  70. 70                      </compilerPlugins>  
  71. 71                  </configuration>  
  72. 72                  <dependencies>  
  73. 73                      <dependency>  
  74. 74                          <groupId>org.jetbrains.kotlin</groupId>  
  75. 75                          <artifactId>kotlin-maven-allopen</artifactId>  
  76. 76                          <version>${kotlin.version}</version>  
  77. 77                      </dependency>  
  78. 78                  </dependencies>  
  79. 79              </plugin>  
  80. 80          </plugins>  
  81. 81      </build>  
  82. 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. 1  @SpringBootApplication  
  2. 2  class KotlinSpringbootApplication  
  3. 3  // 主函数,启动类
  4. 4  fun main(args: Array<String>) {  
  5. 5      runApplication<KotlinSpringbootApplication>(*args);  
  6. 6  }  

IndexController.kt的代码如下:

  1. 1  @RestController  
  2. 2  class IndexController {  
  3. 3      // 定义index接口
  4. 4      @GetMapping("/index")  
  5. 5      fun index(): String {  
  6. 6         return "Hello, Kotlin for Spring Boot!!"  
  7. 7      }  
  8. 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

素质二连????????????

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/464333
推荐阅读
相关标签
  

闽ICP备14008679号