Package cn.xuanyuanli.core.util.beancopy
Class JavassistBeanCopierFactory
java.lang.Object
cn.xuanyuanli.core.util.beancopy.JavassistBeanCopierFactory
- All Implemented Interfaces:
BeanCopierFactory
- Author:
- John Li
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static final javassist.ClassPoolprivate static final AtomicIntegerprivate static final org.slf4j.Logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptioncreateBeanCopier(Class<?> sourceClass, Class<?> targetClass, List<BeanCopyPropertyItem> items, boolean cover) 创建bean复印机getCopyBeanMethodBody(Class<?> sourceClass, Class<?> targetClass, List<BeanCopyPropertyItem> items, boolean cover) 获得构造的方法内容
-
Field Details
-
logger
private static final org.slf4j.Logger logger -
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:
createBeanCopierin interfaceBeanCopierFactory- 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
-