SpringBoot之从Java到Kotlin(混用)-1 - Go语言中文社区

SpringBoot之从Java到Kotlin(混用)-1


介绍

第一篇博客

一直不知道记些什么,恰好最近看了下Kotlin,打算实际使用一番,就拿前一段自己基于SpringCloud搭建了一套后台程序试手吧,记录由Java改为Kotlin过程中遇到的坑和Kotlin的优缺点。

环境及版本

  • Eclipse Oxygen
  • JDK 8
  • Kotlin 1.3.0
  • Gradle 4.6
  • SpringCloud Greenwich.M1
  • SpringBoot 2.1.0.RELEASE

开始

工程结构修改

  1. 安装Eclipse的Kotlin插件
    在Marketplace里搜索Kotlin安装,当前版本为0.88
  2. 修改build.gradle,在原有基础上添加(代码只含添加部分)
buildscript {
	classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${kotlinVersion}")
	classpath("org.jetbrains.kotlin:kotlin-allopen:${kotlinVersion}")
}

apply plugin: 'kotlin'
apply plugin: 'kotlin-spring'

dependencies {
	implementation('com.fasterxml.jackson.module:jackson-module-kotlin')
	implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
	implementation("org.jetbrains.kotlin:kotlin-reflect")
}

sourceSets {
	main {
		java {
			srcDirs = ['src/main/java', 'src/main/kotlin']
		}
	}
}

//应该可省略
compileKotlin {
	kotlinOptions {
		freeCompilerArgs = ["-Xjsr305=strict"]
		jvmTarget = "1.8"
	}
}
compileTestKotlin {
	kotlinOptions {
		freeCompilerArgs = ["-Xjsr305=strict"]
		jvmTarget = "1.8"
	}
}
  1. 原有SourceFolder “srcmainjava”,添加一个 “srcmainkotlin” 用于单独存放Kotlin代码
    工程结构

  2. 刷新一下Gradle

  3. Eclipse设置:Windows-preferences-Kotlin-Compiler
    Eclipse中Kotlin配置

  4. 切换为Kotlin透视图
    切换Kotlin透视图

代码转换

我是打算从controller层开始,一个文件一个文件的转换,

大概步骤

  1. 在kotlin文件夹下创建与java相同的包;
  2. 将需要转换的java类文件拷贝到kotlin包下;
  3. 在java类文件上右键,点击Convert Java to Kotlin(安装kotlin插件后);
  4. 进行查缺补漏,借此巩固自己学到的Kotlin语法。

转换中遇到的问题

  1. 数组自动转换
//java
@RequestMapping(value = "/app", method = RequestMethod.GET)
//kotlin
@RequestMapping(value = ["/app"], method = [RequestMethod.GET])
  1. 自动注入
	//java
 	@Autowired
	private AppService appService;
	//kotlin
	@Autowired
	lateinit var appService: AppService
  • lateinit
    lateinit介绍
  1. 方法函数
	//java
	@RequestMapping("/slider")
	public List<String> slider(){
		return appService.getHomeSliders();
	}
	//kotlin
	@RequestMapping("/slider")
	fun slider() = appService.getHomeSliders()
  • Kotlin中的 ?!!
    Kotlin中默认对象不能为null,? 表示当前对象可以为null
    !! 表示当前对象不为null的情况下执行
  • 单表达式函数:当函数返回单个表达式时,可以省略花括号并且在 = 符号之后指定代码体即可
  • 隐式返回类型:当返回值类型可由编译器推断时,显式声明返回类型可省略

小结

今天初步尝试使用了Kotlin,总体上还是十分欣喜的,原因如下:

  1. 配置及使用方便,只需引用几个gradle插件和jar包,然后简单地配置下eclipse即可;
  2. 与Java无缝集成,上手容易,在熟悉的语法基础上极大的简化了其代码,真的是Better Java;
  3. 空指针安全。

刚刚上手,感觉不错,希望可以吃到更多的语法糖~

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/gotanksgn/article/details/83867416
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢