Kotlin veri sınıflarını kullanarak değer nesnelerini modelliyorsam, doğrulamayı gerçekleştirmenin en iyi yolu nedir? Init bloğu, birincil kurucudan sonra çalıştırıldığından beri tek mantıksal yer gibi görünüyor. JSR-303 ÖrnekDoğrulama Verileri Sınıf Parametreleri Kotlin
Bunun dezavantajı, bunun kullanılması
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")
}
}
}
bu doğrulama veri sınıflarının bir sorumluluk değildir gibi
@Configurable
data class EmailAddress(@Email val address: String) {
@Autowired
lateinit var validator: Validator
init {
validator.validate(this)
}
}
bu tür çalışmak kesinlikle rahatsız olacak, ama ben sadece açık bir 'validate' yöntemi koymak ve Denetleyiciden onu arayın (örneğin, S tarafından doldurulmuş bir istek nesnesinin olması durumunda) '@ RequestBody' olarak önyükleme ve girişleri doğrulamak istiyorum. – Kevin