内容简介:如何使用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的语言的支持
和其他的相比,需要注意以下几点
- buildscript增加kotlin-gradle-plugin的依赖
- 增加apply plugin: ‘kotlin’插件
- 增加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
运行效果如下:
欢迎关注我的公众号代码技艺
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 使用微服务构建云Web服务
- 微服务架构有毒,何时不使用微服务?
- Web服务 – 使用Lisp的Web服务
- 从0开始学微服务:如何使用服务路由?
- 使用Knative提供无服务器服务的简单案例
- Angular7创建项目、组件、服务以及服务的使用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
孵化Twitter
[美]尼克·比尔顿(Nick Bilton) / 欧常智、张宇、单旖 / 浙江人民出版社 / 2014-1 / 49.90元
一个在挣扎中生存的博客平台Odeo,一小撮龙蛇混杂的无政府主义者员工,经历了怎样的涅槃,摇身一变,成为纽交所最闪耀的上市企业Twitter? 一个野心勃勃的农场小男孩,一个满身纹身的“无名氏“,一个爱开玩笑的外交家,一位害羞而又充满活力的极客,这四位各有特色的创始人如何从兢兢业业、每日劳作的工程师,成为了登上杂志封面、奥普拉秀和每日秀的富裕名人?而在Twitter日益茁壮成长的过程中,他们又......一起来看看 《孵化Twitter》 这本书的介绍吧!