6
如果我使用Kotlin数据类为我的值对象建模,处理验证的最佳方式是什么。看起来像init块是唯一合法的地方,因为它在主构造函数之后执行。验证数据类参数Kotlin
data class EmailAddress(val address: String) {
init {
if (address.isEmpty() || !address.matches(Regex("^[a-zA-Z0-9][email protected][a-zA-Z0-9]+(.[a-zA-Z]{2,})$"))) {
throw IllegalArgumentException("${address} is not a valid email address")
}
}
}
使用JSR-303例
这样做的缺点是它需要加载时间编织
@Configurable
data class EmailAddress(@Email val address: String) {
@Autowired
lateinit var validator: Validator
init {
validator.validate(this)
}
}
我一直做类似于你的第一个例子,但我只是把一个明确的'验证'方法和从控制器调用它(例如,在我有一个由S填充的请求对象的情况下将引导引导为'@ RequestBody',我想验证输入。 – Kevin