Class JavassistBeanCopierFactory

java.lang.Object
cn.xuanyuanli.core.util.beancopy.JavassistBeanCopierFactory
All Implemented Interfaces:
BeanCopierFactory

public class JavassistBeanCopierFactory extends Object implements BeanCopierFactory
Author:
John Li
  • Field Details

    • logger

      private static final org.slf4j.Logger logger
    • INSTANCE_COUNT

      private static final AtomicInteger INSTANCE_COUNT
    • CLASS_POOL

      private static final javassist.ClassPool CLASS_POOL
  • Constructor Details

    • JavassistBeanCopierFactory

      public JavassistBeanCopierFactory()
  • Method Details

    • createBeanCopier

      public BeanCopier createBeanCopier(Class<?> sourceClass, Class<?> targetClass, List<BeanCopyPropertyItem> items, boolean cover)
      Description copied from interface: BeanCopierFactory
      创建bean复印机
      Specified by:
      createBeanCopier in interface BeanCopierFactory
      Parameters:
      sourceClass - 源类
      targetClass - 目标类
      items - 项目
      cover - 覆盖
      Returns:
      BeanCopier
    • getCopyBeanMethodBody

      public String getCopyBeanMethodBody(Class<?> sourceClass, Class<?> targetClass, List<BeanCopyPropertyItem> items, boolean cover)
      获得构造的方法内容

      javaassist使用

      • 基本类型的处理
        • 对于获取值来说,要先转换为包装类,方便后续处理。如果get方法返回值类型是primitive,用$w来转换为包装类
        • 对于写入值来说:如果set方法的参数类型是primitive,则使用BeanCopier的getPrimitive系列方法获取primitive值;如果是包装类,则使用Beans.getExpectTypeValue()获得对应类型的值
      • 实参获取:使用$1、$2、$3来获取
      Parameters:
      sourceClass - 源类
      targetClass - 目标类
      items - 项
      cover - 覆盖
      Returns:
      String