带有注释的 kotlin 数据类,为啥 @DateTimeFormat 注释可以在没有定位的情况下工作
Posted
技术标签:
【中文标题】带有注释的 kotlin 数据类,为啥 @DateTimeFormat 注释可以在没有定位的情况下工作【英文标题】:kotlin data class with annotations, why @DateTimeFormat annotation works without targetting带有注释的 kotlin 数据类,为什么 @DateTimeFormat 注释可以在没有定位的情况下工作 【发布时间】:2020-01-26 05:46:50 【问题描述】:data class UserSearchRequest(
@field:NotNull
val active: Boolean?,
// no targeting work
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE)
@field:NotNull
val registeredDate: LocalDate,
)
为什么@DateTimeFormat
注释在没有定位的情况下也能工作?
【问题讨论】:
不确定您所说的定位是什么意思。 @DateTimeFormat 引用registeredDate
因为它是下一个字段,所以它有一个目标。
@Neil 定位我的意思是输入 '@field:' 或 '@get',指的是 kotlinlang.org/docs/reference/…
在 kotlin 数据类中,如果你没有在注解上指定目标,它将被添加到构造函数中而不是在字段本身上,所以注解不会像 @NotNull 一样不起作用是不是
【参考方案1】:
您注册了 kotlin 模块,它允许您将 jackson 注释应用于构造函数参数而无需定位,但它不适用于 Java 验证,如 NotNull 注释
【讨论】:
以上是关于带有注释的 kotlin 数据类,为啥 @DateTimeFormat 注释可以在没有定位的情况下工作的主要内容,如果未能解决你的问题,请参考以下文章
带有 Kotlin 的 Spring Boot - @Value 注释未按预期工作
如何使用 java / kotlin 中的注释处理将方法附加到现有类?
对 kotlin 数据类使用 Jackson @JsonProperty 注释