У меня есть класс компонентаByte Buddy Генерация кода
BeanClass {
<prop1>;
<prop2>;
<prop3>;
//getters and setters
...
}
и утилиту Validations:
Validations {
static void notNull(Object value, ValidationResult result) {
if (...) {
...
}
}
static void doesNotExceedMaxLength(Object value, int max, ValidationResult result) {
if (...) {
...
}
}
Я хотел бы генерировать Validator, как показано ниже -
BeanValidator {
ValidationResult validate(BeanClass bean) {
ValidationResult validationResult = new ValidationResult();
//prop1, prop3 are mandatory...
notNull(bean.getProp1(), validationResult);
notNull(bean.getProp3(), validationResult);
//prop2 must not be more than 255 characters in length
doesNotExceedMaxLength(bean.getProp2(), 255, validationResult)
return validationResult;
}
}
Решение из каких полей являются обязательными и для которых значения не должны превышать определенного количества, будут выполняться во время выполнения, смотря на класс компонента.
Как я могу это сделать с Байт Бадди?
Мы должны проверить миллионы и миллионы предметов. Отражение на геттерах и вызов их в экземплярах bean (даже когда экземпляры экземпляров кэшируются) просто не разрезают его. Я использовал рефлексив и получил значительные улучшения в производительности. Подумайте, почему бы не пойти еще дальше и создать валидатор. – user869081