如何使用Kotlin开发微服务

栏目: 服务器 · 发布时间: 8年前

内容简介:如何使用Kotlin开发微服务

谷歌在5月18号的I/O开发者大会上,宣布将Kotlin语言作为安卓开发的一级编程语言。可能很多人这时第一次听说这门语言。我了解这门语言时间也不长,在今年的一个内网帖子上第一次看到这门语言。今天我们来了解一下Kotlin这门语言和如何使用Kotlin开发微服务

Kotlin简介

Kotlin是一种在 Java 虚拟机上运行的静态类型编程语言,它也可以被编译成为JavaScript源代码。它主要是由俄罗斯圣彼得堡的JetBrains开发团队所发展出来的编程语言,其名称来自于圣彼得堡附近的科特林岛。

以上是维基百科上对于Kotlin的介绍。Kotlin是JetBrains的开发团队设计的基于JVM运行的一门编程语言。

Kotlin的诞生时间并不长,Kotlin的开发始于2010年,在2016年发布第一个正式版本1.0。它吸收了包括C#、 GO 等新兴语言的特性。虽然它在语法上和Java不兼容,但是它在设计时就考虑和Java的代码相互调用,并且可以复用Java现有的类库。

使用Kotlin进行服务端开发

Kotlin非常适合服务端开发,同时Kotlin在设计时就考虑了和Java技术栈的完全兼容,所以对于Java开发者来说,非常容易上手。Java语言设计在90年代,由于Java社区的复杂性,导致Java的特性发展明显落后于其他语言。使用Kotlin可以既享受到现代语言带来新的特性,同时还可以复用Java的开发经验。

在开发 工具 方面,Kotlin出自JetBrains。JetBrains的IDE工具,是宇宙最好的。所以不用担心IDE的支持。

在开发框架方面,可以选择利用Java现有的框架,另外从Spring 5.0开始,Spring利用Kotlin的特性提供了更加简洁的API。

在部署方面,可以部署在任何支持Java应用的机器。

在兼容性方面,如果你的应用都是使用Java开发的,不用担心兼容性问题,可以在开发新的功能时,直接使用Kotlin语言开发。可以使用Kotlin调用你现有的Java代码。

使用Kotlin+Spring Boot开发微服务

下面我们使用Kotlin和SpringBoot开发一个简单的微服务,和学习其他语言一样我们从一个类似HelloWorld的服务开始。

创建一个Kotlin项目

这里使用gradle创建一个项目,下面是build.gradle的代码

group 'info.yywang'
version '1.0.0-SNAPSHOT'

buildscript {
    ext.kotlin_version = '1.1.2-2'
    ext.spring_boot_version='1.5.3.RELEASE'

    repositories {
        jcenter()
        mavenCentral()
    }
    
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version"
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'org.springframework.boot'

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile 'org.springframework.boot:spring-boot-starter-web'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}

以上我们使用spring boot作为微服务框架,增加了kotlin的语言的支持

和其他的相比,需要注意以下几点

  1. buildscript增加kotlin-gradle-plugin的依赖
  2. 增加apply plugin: ‘kotlin’插件
  3. 增加dependencies.compile “org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version”

定义访问者基础类

class Visitor(var name: String, var number: Long) {

    fun sayHello(): String {
        return "Hello,$name. You is the$numbervisitor!"
    }
}

以上我们定义了一个Visitor类,它有一个name属性,表示访问者的名字,一个number属性,表示第几个访问者。还有一个sayHello方法。

定义Controller类

@RestController
class VisitorController{

    var count = AtomicLong()

    @RequestMapping("/hello")
    fun hello(@RequestParam(value ="name",
            defaultValue = "yywang") name: String): String {
        return Visitor(name, count.incrementAndGet()).sayHello()
    }
}

在以上我们定义了hello方法,用户可以输入name,然后返回打招呼的内容。我们使用AtomicLong作为计数器,来计算当前是第几个访问者。

创建Spring Boot启动类

@SpringBootApplication
open class App{
    companion object {
        @JvmStatic fun main(args:Array<String>) {
            SpringApplication.run(App::class.java,*args)
        }
    }
}

以上我们定义了App作为spring boot的启动类。其中使用Kotlin中的@JvmStatic注解表示java中的静态方法。在kotlin中使用@JvmStatic必须要定义在companion object的块中。

在Kotlin中,类默认是final的。在Spring中,对于@Configuration的类,使用CGLIB创建一个继承该类的代理类。所以在Spring Boot中@SpringBootApplication的类不能是final。在Kotlin中使用open修饰符,表示该类可以被继承。

运行

完成以上编程之后,需要在build.gradle中设置mainClass

springBoot{
    mainClass='info.yywang.demo.App'
}

在设置完成之后,运行程序

gradle bootRun

运行效果如下:

如何使用Kotlin开发微服务

欢迎关注我的公众号代码技艺

如何使用Kotlin开发微服务


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Rails

Head First Rails

David Griffiths / O'Reilly Media / 2008-12-30 / USD 49.99

Figure its about time that you hop on the Ruby on Rails bandwagon? You've heard that it'll increase your productivity exponentially, and allow you to created full fledged web applications with minimal......一起来看看 《Head First Rails》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具