1. 程式人生 > >SpringBoot之從Java到Gotlin(混用)-1

SpringBoot之從Java到Gotlin(混用)-1

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 “src\main\java”,新增一個 “src\main\kotlin” 用於單獨存放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 = arrayOf("/app"), method = arrayOf(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. 空指標安全。

剛剛上手,感覺不錯,希望可以吃到更多的語法糖~ See you tomorrow~