在使用 Kotlin 的这段时间,被它的简洁,高效,快捷等等特点震撼。作为一个Android开发,目前所有客户端的编码都是用Kotlin了,偶尔自身也会写一点接口,打算采用Kotlin来进行编写,所以写一篇文章记录一下配置全流程。
名称 | 选型 |
---|---|
编码语言 | kotlin |
包依赖管理 | gradle |
后端框架 | springboot |
需要使用Gradle进行包管理,所以选中Gradle分类下的Java以及Kotlin,点击next
。
接下来可以按照需要改一下,工程存放路径名称等相关内容。之后点击Finish
正常来说工程结构,是上图这样就基本可以了。如果没有出现src/main/kotlin这些目录的话,就创建成功了,如果没有出现src/main/kotlin的目录的话就需要手动创建了,具体步骤如下:
在build.gradle中添加相关的插件和依赖的库。
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.4.32'
id 'org.springframework.boot' version '2.2.5.RELEASE'
}
ext {
libraries = [
rxjava : "2.2.2",
spring_boot : "2.2.5.RELEASE",
fastjson : "1.2.51"
]
}
group 'org.kotlin.zxf'
version '1.0-SNAPSHOT'
springBoot {
//设定启动类,
mainClassName = "com.kotlin.zxf.ApplicationKt"
}
sourceCompatibility = 1.8
def libs = rootProject.ext.libraries
repositories {
mavenLocal()
maven {
setUrl("https://maven.aliyun.com/repository/public/")
}
mavenCentral()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
testCompile group: 'junit', name: 'junit', version: '4.12'
implementation "io.reactivex.rxjava2:rxjava:${libs.rxjava}"
implementation "org.springframework.boot:spring-boot-starter-web:${libs.spring_boot}"
implementation "org.springframework.boot:spring-boot-starter-data-redis:${libs.spring_boot}"
implementation "com.alibaba:fastjson:${libs.fastjson}"
}
compileKotlin {
kotlinOptions.jvmTarget = "1.8"
}
需要注意的是里面的mainClassName 配置,它负责配置程序启动的类(指向Application)。这个根据自己的工程结构来设置。
注意Application类必须声明为open
,因为kotlin默认为final。
上面提到的mainClassName就指向这里的Application.kt文件,因为是kotlin,所以这里增加kt,即"com.kotlin.zxf.ApplicationKt"
@SpringBootApplication
open class Application
fun main(args: Array<String>) {
SpringApplication.run(Application::class.java, *args)
}
写两个数据类,对结果进行简单封装
data class Status(
val code: Int = 1,
val text: String = "请求成功"
)
data class CommonResult<T>(
//默认状态为请求成功
val status: Status = Status(),
val custom: T
)
创建实体类
data class StudentEntity(
val id: Int,
val name: String,
val age: Int)
创建service
interface IUserService {
fun getAllStudent(): StudentEntity
}
@Service
class UserService : IUserService {
override fun getAllStudent(): StudentEntity = StudentEntity(1, "zxf", 18)
}
创建Controller
@RestController
@RequestMapping("/message/list")
class StudentController {
@Autowired
lateinit var userService: UserService
@PostMapping("/getAllMessage")
fun getAllMessage(@RequestParam("params") params: String): CommonResult<StudentEntity> {
return CommonResult(custom = userService.getAllStudent())
}
}
创建完Controller之后,就可以运行main进行测试了,上面写了post请求,使用postman模拟进行测试:
请求成功了,是不是很简单
部署方式:在Linux使用docker部署Jar包。
打Jar包,点击工程右侧Gradle,选择运行bootJar。
运行成功之后,在根目录buid/libs文件夹下会生成对应的jar包,比如我这里生成的是:
在Linux上安装docker,这里不做过多介绍比较简单,自行百度处理。
将jar包放到linux上,这里我创建了名字为mockdata的文件夹,用来放jar包(这里将原来的jar包名字里面的下划线替换为了“-”)。
同样在mockdata目录下创建Dockfile。使用vi Dockfile。文件夹内放入如下内容:
文本内容解析:
拉取java8
作者:zxf
增加yanshi-data-proxy-1.0-SNAPSHOT镜像 并重命名为ysdp.jar
端口号(和jar包内保持一致就可以了):8080
使用的命令 java -jar ysdp.jar
文件创建好后,使用docker make -t ysdp .
命令生成镜像
然后使用docker run -d -p 8080 : 8080 ysdp
运行即可
可以使用ps -ef | grep ysdp
查看运行的进程
运行成功之后,也可以使用postman进行测试。
一个基于kotlin简单的springboot项目就这样搭建好了。是不是很简单!