Nếu tôi đang lập mô hình đối tượng giá trị của mình bằng cách sử dụng lớp dữ liệu Kotlin cách tốt nhất để xử lý xác thực là gì. Có vẻ như khối init là nơi duy nhất hợp lý kể từ khi nó thực hiện sau khi các nhà xây dựng chính.Tham số lớp dữ liệu hợp lệ 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")
}
}
}
Sử dụng JSR-303 Ví dụ
Nhược điểm này là nó đòi hỏi thời gian tải dệt
@Configurable
data class EmailAddress(@Email val address: String) {
@Autowired
lateinit var validator: Validator
init {
validator.validate(this)
}
}
Tôi luôn làm điều gì đó tương tự như ví dụ đầu tiên của bạn, nhưng tôi chỉ đặt phương thức 'validate' rõ ràng và gọi nó từ bộ điều khiển (ví dụ, trong trường hợp tôi có một đối tượng yêu cầu được điền bởi S pring boot như một '@ RequestBody' và tôi muốn xác thực các đầu vào. – Kevin