Kotlin之在Gradle中無參(no-arg)編譯器插件的使用

一、前言

最近在用Kotlin+Spring Boot寫一個後端項目,實體類習慣性地用了Kotlin中的data class,可是Spring要求要有一個無參的構造函數,不然可能會拋出java.sql.SQLDataException。要使data class可以生成一個無參的構造函數,有兩種方法能夠作到:html

1.給data class的構造函數中的每個參數都賦上默認值。好比:java

data class User(
    @TableId(value = "id", type = IdType.AUTO)
    var id: Int?=-1,
    var userName: String?=null,  //用戶名
    var age: Int?=null,  //年齡
    var password: String?=null,  //密碼
    var name: String?=null,  //姓名
    var email: String?=null   //郵箱
) : Serializable

2.使用無參編譯器插件no-arg。下面咱們就來看看這種方法。sql

二、具體步驟

2.1 添加插件依賴

首先須要在工程的build.gradle中添加no-arg插件的依賴,版本跟Kotlin的版本一致:後端

plugins {
       ……
    id "org.jetbrains.kotlin.plugin.noarg" version "1.3.41"
}

我用的是plugins的形式,若是你使用的是buildscript 塊的話就能夠這樣添加:app

buildscript {
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-noarg:1.3.41"
    }
}

apply plugin: "kotlin-noarg"

2.2 指定無參註解列表

說實話,在看官方文檔時這一步並很差理解,這裏只描述我通過本身的實踐以後得出的經驗。首先建立一個註解類,類名咱們能夠定爲NoArg函數

annotation class NoArg

而後最關鍵一步來了,回到工程的build.gradle文件,添加無參註解列表:gradle

noArg {
    annotation("com.lindroid.projectname.annotation.NoArg")
}

annotation中的路徑就是咱們建立的NoArg註解類所在的包目錄。路徑必定要寫好,不要出錯!此時無參插件就已經配置好了。咱們能夠在data class前面添加@NoArg註解,這樣編譯器就能爲其生成一個無參構造函數。使用示例以下:ui

@NoArg
data class User(
    @TableId(value = "id", type = IdType.AUTO)
    var id: Int?,
    var userName: String?,  //用戶名
    var age: Int?,  //年齡
    var password: String?,  //密碼
    var name: String?,  //姓名
    var email: String?   //郵箱
) : Serializable

2.3 kotlin-jpa中的無參註解

若是你的項目中已經添加了kotlin-jpa插件,那麼基本上就沒必要單獨添加無參插件了。kotlin-jpa對無參插件作了包裝,當你使用 @Entity @Embeddable @MappedSuperclass這幾個註解時,都會默認支持無參註解的。spa

三、參考文章

Kotlin官方文檔.net

相關文章
相關標籤/搜索