欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Kotlin之在Gradle中无参(no-arg)编译器插件的使用详解

程序员文章站 2023-11-09 16:43:40
1、前言 最近在用kotlin+spring boot写一个后端项目,实体类习惯性地用了kotlin中的data class,但是spring要求要有一个无参的构造函数,否则可能...

1、前言

最近在用kotlin+spring boot写一个后端项目,实体类习惯性地用了kotlin中的data class,但是spring要求要有一个无参的构造函数,否则可能会抛出java.sql.sqldataexception。要使data class能够生成一个无参的构造函数,有两种方法可以做到:

1.给data class的构造函数中的每一个参数都赋上默认值。比如:

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。下面我们就来看看这种方法。

2、具体步骤

2.1 添加插件依赖
首先需要在工程的build.gradle中添加no-arg插件的依赖,版本跟kotlin的版本一致:

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

我用的是plugins的形式,如果你使用的是buildscript 块的话就可以这样添加:

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

apply plugin: "kotlin-noarg"

2.2 指定无参注解列表

说实话,在看官方文档时这一步并不好理解,这里只描述我经过自己的实践之后得出的经验。首先创建一个注解类,类名我们可以定为noarg:

annotation class noarg

然后最关键一步来了,回到工程的build.gradle文件,添加无参注解列表:

noarg {
  annotation("com.lindroid.projectname.annotation.noarg")
}

annotation中的路径就是我们创建的noarg注解类所在的包目录。路径一定要写好,不要出错!此时无参插件就已经配置好了。我们可以在data class前面添加@noarg注解,这样编译器就能为其生成一个无参构造函数。使用示例如下:

@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这几个注解时,都会默认支持无参注解的。

3、参考文章

kotlin官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。