我有一个豆类

BeanClass {

  <prop1>;
  <prop2>;
  <prop3>;

  //getters and setters
  ...
}


和验证实用程序:

Validations {

  static void notNull(Object value, ValidationResult result) {
    if (...) {
      ...
    }
  }

  static void doesNotExceedMaxLength(Object value, int max, ValidationResult result) {
    if (...) {
      ...
    }
 }


我想生成一个类似下面的验证器-

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类,以决定哪些字段是必需字段以及哪些值不得超过特定数量。

如何使用Byte Buddy做到这一点?

最佳答案

我认为您不想为此目的使用字节伙伴。这就是反射API的用途。使用Byte Buddy不会给您任何性能上的好处,并且由于Byte Buddy不会创建任何源代码,因此您也不会进一步记录您的应用程序。

您为什么要使用代码生成来实现这种验证器?

09-09 22:22