Java开发者应该知道,许多微服务都是使用Spring Boot构建的,即用Java编写的。随着Kotlin语言的普及,它比Java要更适用于Spring Boot来构建后端服务。从版本5开始,Spring框架引入了对Kotlin的支持。在本文中,我将向您展示使用Kotlin和Spring Boot 2构建的微服务的示例。
1.配置和依赖关系
要在Maven项目中使用Kotlin必须包括插件 kotlin-maven-plugin 和目录 /src/main/kotlin、/src/test/kotli来生成配置。我们还将编译器选项 -Xjsr305 设为 strict ,此选项负责检查对JSR-305注解的支持(例如 @NotNull)。
我们还应该包括一些核心Kotlin库,如kotlin-stdlib-jdk8和kotlin-reflect。 默认情况下,它们在start.spring.io上提供给Kotlin项目。 对于基于REST的应用程序,您还需要Jackson库来进行JSON序列化和反序列化。 当然,我们必须将Web应用程序的Spring启动器与Actuator一起包括在内,Actuator负责提供管理端点。
我们使用最新稳定版的Spring Boot和Kotlin 1.2.71。
2.构建应用程序
让我们从头开始,如果您熟悉Spring Boot和Java,应该知道最大的区别在于主类声明。您将在Spring Boot应用程序类之外调用runApplication方法。主要类与Java相同,使用@SpringBootApplication进行注释。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):cgmx9880 扩列获取java进阶资料学习,无工作经验不要加哦!
我们的示例程序非常简单,它公开了一些REST端点,为模型对象提供CRUD操作。通过这段代码,可以看到一些不错的Kotlin功能。我们可以使用带有推断返回类型的缩短函数声明;注解@PathVariable不需要任何参数;输入参数名称被视为与变量名称相同。当然,我们使用与Java相同的注解。 在Kotlin中,必须在构造函数中初始化声明为非null类型的每个属性。 因此,如果您使用依赖注入初始化,则必须将其声明为lateinit。 以下是PersonController的实现。
Kotlin自动为声明为var的类属性生成getter和setter。此外,如果将模型声明为数据类,则会生成equals、hashCode和toString方法。我们的模型类Personis的声明非常简洁,如下所示。
我已经实现了自己的内存存储库类,使用Kotlin扩展来操作元素列表。 这种内置的Kotlin功能类似于Java流,不同之处在于您不必在Collection和Stream之间执行任何转换。
3.启用执行器端点
由于我们已经在应用程序代码中包含了带有Actuator的Spring Boot启动器,因此我们可以利用其生产准备功能。 Spring Boot Actuator为您提供了非常强大的工具来监控和管理您的应用程序,可以提供高级运行状况检查、信息端点或将指标发送到众多监控系统,如InfluxDB。 在包含Actuator之后,我们唯一要做的就是通过HTTP为我们的应用程序启用其所有端点。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):cgmx9880 扩列获取java进阶资料学习,无工作经验不要加哦!
我们可以自定义Actuator端点,以提供有关我们应用的更多详细信息。 一个好的做法是将有关版本和git提交的信息公开给info端点。 像往常一样,Spring Boot为这些功能提供了自动配置,因此我们唯一需要做的就是将一些Maven插件包含在pom.xml中的构建配置中。 为spring-boot-maven-plugin设置了目标build-info,并强制它生成一个包含版本基本信息的属性文件。 该文件位于目录META-INF / build-info.properties中。 插件git-commit-id-plugin将在根目录中生成git.properties文件。
现在,您应该使用mvn clean installcommand构建应用程序,然后运行它。
信息端点位于地址http://localhost:8080/actuator/info下,它为我们揭示了一些有趣的信息。
4.启用API文档
构建信息和git属性可以很容易地注入到应用程序代码中,在某些情况下它可能很有用,其中一种情况是您已启用自动生成的API文档。最流行的工具是Swagger。您可以使用SpringFox Swagger项目轻松地将Swagger 2与Spring Boot集成。首先,您需要在pom.xml中包含以下依赖项。想学习交流HashMap,nginx、dubbo、Spring MVC,分布式、高性能高可用、MySQL,redis、jvm、多线程、netty、kafka、的加尉xin(同英):cgmx9880 扩列获取java进阶资料学习,无工作经验不要加哦!
然后,您应该通过使用@ EnableSwagger2注解来启用Swagger,bean、BuildProperties和GitProperties中提供了所需的信息,我们只需将它们注入到Swagger配置类中。如下所示,我们将它们设置为可选,以防止应用程序启动失败。
该文档位于上下文路径/swagger-ui.html下。除API文档外,它还显示有关应用程序版本,git commit id和分支名称的信息。
5.选择服务器
Spring Boot Web可以在三个不同的嵌入式服务器上运行:Tomcat,Jetty或Undertow。 默认情况下,使用Tomcat。 要更改默认服务器,您只需要包含合适的Spring Boot启动器并排除spring-boot-starter-tomcat。 一个好的做法可能是在应用程序构建期间在服务器之间切换。 您可以通过声明Maven配置文件来实现它,如下所示。
现在,如果您想为应用程序启用Tomcat以外的服务器,则应在Maven构建期间激活相应的配置文件。
总结
使用Kotlin和Spring Boot开发微服务非常简单,基于此示例应用程序,我介绍了使用Spring Boot和Kotlin构建微服务时的一些好的做法。您可以将以上方法与其他使用Kotlin的一些微框架进行比较,例如Ktor。