字节好友代码生成

时间:2015-06-08 15:05:35

标签: java bytecode byte-buddy

我有一个bean类

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一起做这件事?

1 个答案:

答案 0 :(得分:0)

我认为您不想将Byte Buddy用于此目的。这就是反射API的用途。使用Byte Buddy不会给您任何性能优势,因为Byte Buddy不会创建任何源代码,您也不会进一步记录您的应用程序。

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