Kotlin之在Gradle中无参(no-arg)编译器插件的使用详解
1、前言
最近在用Kotlin+SpringBoot写一个后端项目,实体类习惯性地用了Kotlin中的dataclass,但是Spring要求要有一个无参的构造函数,否则可能会抛出java.sql.SQLDataException。要使dataclass能够生成一个无参的构造函数,有两种方法可以做到:
1.给dataclass的构造函数中的每一个参数都赋上默认值。比如:
dataclassUser( @TableId(value="id",type=IdType.AUTO) varid:Int?=-1, varuserName:String?=null,//用户名 varage:Int?=null,//年龄 varpassword:String?=null,//密码 varname:String?=null,//姓名 varemail: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" } } applyplugin:"kotlin-noarg"
2.2指定无参注解列表
说实话,在看官方文档时这一步并不好理解,这里只描述我经过自己的实践之后得出的经验。首先创建一个注解类,类名我们可以定为NoArg:
annotationclassNoArg
然后最关键一步来了,回到工程的build.gradle文件,添加无参注解列表:
noArg{ annotation("com.lindroid.projectname.annotation.NoArg") }
annotation中的路径就是我们创建的NoArg注解类所在的包目录。路径一定要写好,不要出错!此时无参插件就已经配置好了。我们可以在dataclass前面添加@NoArg注解,这样编译器就能为其生成一个无参构造函数。使用示例如下:
@NoArg dataclassUser( @TableId(value="id",type=IdType.AUTO) varid:Int?, varuserName:String?,//用户名 varage:Int?,//年龄 varpassword:String?,//密码 varname:String?,//姓名 varemail:String?//邮箱 ):Serializable
2.3kotlin-jpa中的无参注解
如果你的项目中已经添加了kotlin-jpa插件,那么基本上就不必单独添加无参插件了。kotlin-jpa对无参插件做了包装,当你使用@Entity、@Embeddable与@MappedSuperclass这几个注解时,都会默认支持无参注解的。
3、参考文章
Kotlin官方文档
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。