From 53b2ffcc4daa41e9c1300bb83ceb6856142cb74d Mon Sep 17 00:00:00 2001 From: guyadong <10km0811@sohu.com> Date: Wed, 26 Mar 2025 18:56:36 +0800 Subject: [PATCH 1/2] =?UTF-8?q?perf(common-base2):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E7=BC=93=E5=AD=98=E7=AD=96=E7=95=A5=E5=B9=B6=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=80=A7=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 调整 AoWeakCacheable 注解参数,优化缓存效果 - 移除 FieldDescriptorFactory 中的复杂缓存逻辑 - 更新 NameResolver 中的缓存策略 - 调整 BeanPropertySupportImpl 中的缓存设置 - 优化 MappedPropertyDescriptor 中的方法缓存 - 更新 FieldPropertyDescriptor 中的缓存策略 - 调整 BaseTypeTransformer 中的缓存设置 - 添加 PerformanceProfiler 相关测试代码 --- common-base2/pom.xml | 4 +++ .../l0km/com4j/basex/BaseTypeTransformer.java | 3 +- .../basex/bean/BaseBeanPropertySupport.java | 7 +++++ .../com4j/basex/bean/MultiCaseMatcher.java | 1 - .../l0km/com4j/basex/bean/NameResolver.java | 8 +++++ .../bean/jdk/BeanPropertySupportImpl.java | 17 +++++----- .../descriptor/FieldPropertyDescriptor.java | 3 +- .../descriptor/MappedPropertyDescriptor.java | 3 ++ .../jdk/factory/FieldDescriptorFactory.java | 31 +------------------ .../openbeans/BeanPropertySupportImpl.java | 17 +++++----- .../descriptor/FieldPropertyDescriptor.java | 3 +- .../descriptor/MappedPropertyDescriptor.java | 3 ++ .../factory/FieldDescriptorFactory.java | 31 +------------------ .../com4j/basex/BaseTypeTransformerTest.java | 11 ++++++- .../basex/bean/BeanPropertySupportTest.java | 6 ++++ pom.xml | 2 +- 16 files changed, 68 insertions(+), 82 deletions(-) diff --git a/common-base2/pom.xml b/common-base2/pom.xml index ec645a4a..ea528a93 100644 --- a/common-base2/pom.xml +++ b/common-base2/pom.xml @@ -128,6 +128,10 @@ 1.7 true true + ignore diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java index f797d484..4581b433 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/BaseTypeTransformer.java @@ -41,6 +41,7 @@ import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import java.util.UUID; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; @@ -769,7 +770,7 @@ public class BaseTypeTransformer{ * @since 4.4.0 */ @SuppressWarnings({ "rawtypes", "unchecked" }) - @AoWeakCacheable + @AoWeakCacheable(expireAfterAccess = 16, expireAfterAccessTimeUnit = TimeUnit.SECONDS) protected Function getTransformer(final TypeToken left, final TypeToken right) { checkArgument(null != left && null != right, "left, right must not be null"); Function result = getTransformer0(left, right, true); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java index 4f2a1ce2..7971c1c9 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/BaseBeanPropertySupport.java @@ -92,10 +92,12 @@ public abstract class BaseBeanPropertySupport { * 获取beanClass中所有具有指定读写类型(rw)的属性名集合 * @param beanClass * @param rw 属性类型标记
+ * * @param lenient 是否为宽容模式---允许返回类型不为void的setter方法 * @return 属性名与PropertyDescriptor映射的Map对象 * @since 2.8.0 @@ -950,6 +952,11 @@ public abstract class BaseBeanPropertySupport { private void supplementNullPropertiesFrom(Object dest, Object orig, BaseTypeTransformer typeTransformer, ContextProvider... features) { if (null != dest && null != orig && features.length != 0) { + /** + * 遍历目标对象所有可写入字段, + * 当目标字段为 null,且源对象不存在该属性的读取方法, + * 对 null 执行转换,如果转换结果不为 null,则设置到属性中 + */ for (String name : getPropertyNames(dest, 2, true)) { Object value = getProperty(dest, name); if (value == null && !isReadable(orig, name)) { diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java index c7ad4da4..c5f94982 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/MultiCaseMatcher.java @@ -167,7 +167,6 @@ public class MultiCaseMatcher { * @param collection * @param name */ - @AoWeakCacheable(expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) public static String matchedNameOf(Collection collection, String name) { return COLLECTION_MATCHER.matchedNameOf(collection, name); } diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java index 70665f51..955b0c53 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/NameResolver.java @@ -1,8 +1,11 @@ package com.gitee.l0km.com4j.basex.bean; +import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; +import com.gitee.l0km.aocache.annotations.AoWeakCacheable; + /** * base on org.apache.commons.beanutils.expression.DefaultResolver
* Default Property Name Expression {@code Resolver} Implementation. @@ -186,6 +189,7 @@ public class NameResolver { * @param expression The property expression * @return The property name */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public String getProperty(String expression) { if (expression == null || expression.length() == 0) { return expression; @@ -226,6 +230,7 @@ public class NameResolver { * @return true if the expresion is indexed, * otherwise false */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public boolean isIndexed(String expression) { if (expression == null || expression.length() == 0) { return false; @@ -239,6 +244,7 @@ public class NameResolver { * @return true if the expresion is indexed, * otherwise false */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public boolean isSearched(String expression) { if (expression == null || expression.length() == 0) { return false; @@ -253,6 +259,7 @@ public class NameResolver { * @return true if the expresion is mapped, * otherwise false */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public boolean isMapped(String expression) { if (expression == null || expression.length() == 0) { return false; @@ -356,6 +363,7 @@ public class NameResolver { * @return The new expression value, with first property * expression removed - null if there are no more expressions */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public String remove(String expression) { if (expression == null || expression.length() == 0) { return null; diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java index 03d82e0b..c53fcbd8 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/BeanPropertySupportImpl.java @@ -16,7 +16,6 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -72,7 +71,8 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { protected BeanPropertySupportImpl(BaseTypeTransformer typeTransformer, ContextProvider[] transformerFeatures) { super(typeTransformer, transformerFeatures); } - @AoWeakCacheable + + @Override public BaseBeanPropertySupport withTransformer(BaseTypeTransformer typeTransformer, ContextProvider... transformerFeatures) { if( null == typeTransformer){ @@ -88,7 +88,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { return new BeanPropertySupportImpl(typeTransformer, transformerFeatures); } - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static BeanIntrospectionData getIntrospectionData0(Class beanClass) throws IntrospectionException { BeanInfo beanInfo = Introspector.getBeanInfo(beanClass); @@ -146,15 +146,17 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * 获取beanClass中所有具有指定读写类型(rw)的属性 * @param beanClass * @param rw 属性类型标记
+ * * @param lenient 是否为宽容模式---允许返回类型不为void的setter方法 - * @return 属性名与PropertyDescriptor映射的Map对象 + * @return 属性名与PropertyDescriptor映射的LinkedHashMap对象(不可修改) */ - @AoWeakCacheable - public HashMap getProperties(Class beanClass, int rw, boolean lenient) { + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) + public Map getProperties(Class beanClass, int rw, boolean lenient) { LinkedHashMap properties = new LinkedHashMap(); if (beanClass != null) { PropertyDescriptor[] origDescriptors = getPropertyDescriptors(beanClass); @@ -181,7 +183,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { } } } - return properties; + return Collections.unmodifiableMap(properties); } /** * 获取beanClass中所有具有指定读写类型(rw)的属性 @@ -833,7 +835,6 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * @param descriptor * @since 4.4.0 */ - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) private static Type propertyGenericTypeForWriteOf(PropertyDescriptor descriptor) { if(descriptor instanceof NoStandardPropertyDescriptor){ return ((NoStandardPropertyDescriptor)descriptor).getPropertyGenericType(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java index ab4f1981..3156bd76 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/FieldPropertyDescriptor.java @@ -101,6 +101,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ public Field getField() { return field; } + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public static FieldPropertyDescriptor create(Class beanClass,String name){ if(null != beanClass && null != name){ Field field = MultiCaseMatcher.matchedFieldOf(beanClass, name); @@ -154,7 +155,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ * @return 返回不可变的字段名称集合,如果类为空则返回空集合 * */ - @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static ImmutableSet allFieldNamesOf(Class clazz, boolean withFinal) { if (null != clazz) { ImmutableSet.Builder builder = ImmutableSet.builder(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java index 1b768a69..55444f3e 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/descriptor/MappedPropertyDescriptor.java @@ -7,7 +7,9 @@ import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.concurrent.TimeUnit; +import com.gitee.l0km.aocache.annotations.AoWeakCacheable; import com.gitee.l0km.com4j.basex.reflection.MethodUtils; @@ -362,6 +364,7 @@ public class MappedPropertyDescriptor extends PropertyDescriptor { /** * Find a method on a class with a specified number of parameters. */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static Method getMethod(Class clazz, String methodName, int parameterCount) throws IntrospectionException { if (methodName == null) { diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java index adc697c8..5aacbb60 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/jdk/factory/FieldDescriptorFactory.java @@ -2,45 +2,16 @@ package com.gitee.l0km.com4j.basex.bean.jdk.factory; import java.beans.IntrospectionException; import java.beans.PropertyDescriptor; -import java.util.Arrays; -import java.util.List; - -import com.gitee.l0km.com4j.basex.bean.exception.BeanPropertyRuntimeException; import com.gitee.l0km.com4j.basex.bean.jdk.descriptor.FieldPropertyDescriptor; -import com.gitee.l0km.com4j.basex.cache.FunctionCached; -import com.google.common.base.Function; -import com.google.common.base.Optional; /** * @author guyadong * @since 2.7.0 */ public class FieldDescriptorFactory implements PropertyDescriptorFactory { - private static final FunctionCached, Optional> descriptorCached = FunctionCached.of(new Function,Optional>(){ - - @Override - public Optional apply(List input) { - if(input.get(0) instanceof Class && input.get(1) instanceof String){ - PropertyDescriptor descriptor = FieldPropertyDescriptor.create(((Class)input.get(0)), (String)input.get(1)); - if(null!= descriptor) { - return Optional.of(descriptor); - } - } - return Optional.absent(); - }}); @Override public PropertyDescriptor descriptorOf(Object bean, String name) throws IntrospectionException { - try { - if(bean != null ){ - return descriptorCached.get(Arrays.asList(bean.getClass(),name)).orNull(); - } - return null; - } catch (BeanPropertyRuntimeException e) { - if(e.getCause() instanceof IntrospectionException) { - throw (IntrospectionException)e.getCause(); - } - throw e; - } + return FieldPropertyDescriptor.create(bean, name); } } diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java index f5352e95..9b1eacc7 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/BeanPropertySupportImpl.java @@ -16,7 +16,6 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedHashSet; @@ -72,7 +71,8 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { protected BeanPropertySupportImpl(BaseTypeTransformer typeTransformer, ContextProvider[] transformerFeatures) { super(typeTransformer, transformerFeatures); } - @AoWeakCacheable + + @Override public BaseBeanPropertySupport withTransformer(BaseTypeTransformer typeTransformer, ContextProvider... transformerFeatures) { if( null == typeTransformer){ @@ -88,7 +88,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { return new BeanPropertySupportImpl(typeTransformer, transformerFeatures); } - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static BeanIntrospectionData getIntrospectionData0(Class beanClass) throws IntrospectionException { BeanInfo beanInfo = Introspector.getBeanInfo(beanClass); @@ -146,15 +146,17 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * 获取beanClass中所有具有指定读写类型(rw)的属性 * @param beanClass * @param rw 属性类型标记
+ *
    *
  • 0 所有属性
  • *
  • 1 读属性
  • *
  • 2 写属性
  • *
  • 3 读写属性
  • + *
* @param lenient 是否为宽容模式---允许返回类型不为void的setter方法 - * @return 属性名与PropertyDescriptor映射的Map对象 + * @return 属性名与PropertyDescriptor映射的LinkedHashMap对象(不可修改) */ - @AoWeakCacheable - public HashMap getProperties(Class beanClass, int rw, boolean lenient) { + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) + public Map getProperties(Class beanClass, int rw, boolean lenient) { LinkedHashMap properties = new LinkedHashMap(); if (beanClass != null) { PropertyDescriptor[] origDescriptors = getPropertyDescriptors(beanClass); @@ -181,7 +183,7 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { } } } - return properties; + return Collections.unmodifiableMap(properties); } /** * 获取beanClass中所有具有指定读写类型(rw)的属性 @@ -833,7 +835,6 @@ public class BeanPropertySupportImpl extends BaseBeanPropertySupport { * @param descriptor * @since 4.4.0 */ - @AoWeakCacheable(maximumSize = 1000, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) private static Type propertyGenericTypeForWriteOf(PropertyDescriptor descriptor) { if(descriptor instanceof NoStandardPropertyDescriptor){ return ((NoStandardPropertyDescriptor)descriptor).getPropertyGenericType(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java index 01b68c73..594bb040 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/FieldPropertyDescriptor.java @@ -101,6 +101,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ public Field getField() { return field; } + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) public static FieldPropertyDescriptor create(Class beanClass,String name){ if(null != beanClass && null != name){ Field field = MultiCaseMatcher.matchedFieldOf(beanClass, name); @@ -154,7 +155,7 @@ public class FieldPropertyDescriptor extends BaseNoStandardPropertyDescriptor{ * @return 返回不可变的字段名称集合,如果类为空则返回空集合 * */ - @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 2, expireAfterAccessTimeUnit = TimeUnit.MINUTES) + @AoWeakCacheable(maximumSize = 100, expireAfterAccess = 60, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static ImmutableSet allFieldNamesOf(Class clazz, boolean withFinal) { if (null != clazz) { ImmutableSet.Builder builder = ImmutableSet.builder(); diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java index 12425257..cdc3ce86 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/descriptor/MappedPropertyDescriptor.java @@ -7,7 +7,9 @@ import java.lang.ref.SoftReference; import java.lang.ref.WeakReference; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.util.concurrent.TimeUnit; +import com.gitee.l0km.aocache.annotations.AoWeakCacheable; import com.gitee.l0km.com4j.basex.reflection.MethodUtils; @@ -362,6 +364,7 @@ public class MappedPropertyDescriptor extends PropertyDescriptor { /** * Find a method on a class with a specified number of parameters. */ + @AoWeakCacheable(maximumSize = 200, expireAfterAccess = 8, expireAfterAccessTimeUnit = TimeUnit.SECONDS) private static Method getMethod(Class clazz, String methodName, int parameterCount) throws IntrospectionException { if (methodName == null) { diff --git a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java index 772a9d97..5e73066b 100644 --- a/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java +++ b/common-base2/src/main/java/com/gitee/l0km/com4j/basex/bean/openbeans/factory/FieldDescriptorFactory.java @@ -2,45 +2,16 @@ package com.gitee.l0km.com4j.basex.bean.openbeans.factory; import com.googlecode.openbeans.IntrospectionException; import com.googlecode.openbeans.PropertyDescriptor; -import java.util.Arrays; -import java.util.List; - -import com.gitee.l0km.com4j.basex.bean.exception.BeanPropertyRuntimeException; import com.gitee.l0km.com4j.basex.bean.openbeans.descriptor.FieldPropertyDescriptor; -import com.gitee.l0km.com4j.basex.cache.FunctionCached; -import com.google.common.base.Function; -import com.google.common.base.Optional; /** * @author guyadong * @since 2.7.0 */ public class FieldDescriptorFactory implements PropertyDescriptorFactory { - private static final FunctionCached, Optional> descriptorCached = FunctionCached.of(new Function,Optional>(){ - - @Override - public Optional apply(List input) { - if(input.get(0) instanceof Class && input.get(1) instanceof String){ - PropertyDescriptor descriptor = FieldPropertyDescriptor.create(((Class)input.get(0)), (String)input.get(1)); - if(null!= descriptor) { - return Optional.of(descriptor); - } - } - return Optional.absent(); - }}); @Override public PropertyDescriptor descriptorOf(Object bean, String name) throws IntrospectionException { - try { - if(bean != null ){ - return descriptorCached.get(Arrays.asList(bean.getClass(),name)).orNull(); - } - return null; - } catch (BeanPropertyRuntimeException e) { - if(e.getCause() instanceof IntrospectionException) { - throw (IntrospectionException)e.getCause(); - } - throw e; - } + return FieldPropertyDescriptor.create(bean, name); } } diff --git a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java index 3430e23b..80c2b88c 100644 --- a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java +++ b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/BaseTypeTransformerTest.java @@ -47,10 +47,14 @@ import static com.gitee.l0km.com4j.basex.BaseTypeTransformer.isContainerType; import static com.gitee.l0km.com4j.basex.BaseTypeTransformer.elementTypeOf; import static com.gitee.l0km.com4j.basex.BaseTypeTransformer.isEmpty; +import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; +import com.gitee.l0km.aocache.AocacheLogger; +import com.gitee.l0km.aocache.MemberCache; +import com.gitee.l0km.aocache.PerformanceProfiler; import com.gitee.l0km.com4j.basex.transformer.Feature; import com.google.common.base.Function; import com.google.common.collect.BiMap; @@ -71,7 +75,12 @@ import com.google.common.util.concurrent.AtomicDouble; @FixMethodOrder(MethodSorters.NAME_ASCENDING) public class BaseTypeTransformerTest { - + @BeforeClass + public static void setUpBeforeClass() throws Exception { + MemberCache.INSTANCE.setLogger(AocacheLogger.DEFAULT, false, true, true); + /** PerformanceProfiler 测试 */ +// PerformanceProfiler.setEnableLog(true); + } @Test public void test01ToArray() { BaseTypeTransformer transformer = new BaseTypeTransformer(); diff --git a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java index cfcc0d10..1470ecb1 100644 --- a/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java +++ b/common-base2/src/test/java/com/gitee/l0km/com4j/basex/bean/BeanPropertySupportTest.java @@ -15,6 +15,9 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; +import com.gitee.l0km.aocache.AocacheLogger; +import com.gitee.l0km.aocache.MemberCache; +import com.gitee.l0km.aocache.PerformanceProfiler; import com.gitee.l0km.com4j.basex.DateSupport; import com.gitee.l0km.com4j.basex.bean.BaseBeanPropertySupport.DiffNode; import com.gitee.l0km.com4j.basex.bean.exception.CycleReferenceException; @@ -33,6 +36,9 @@ public class BeanPropertySupportTest { @BeforeClass public static void setUpBeforeClass() throws Exception { BeanPropertySupport.setTraceEnabled(true); + MemberCache.INSTANCE.setLogger(AocacheLogger.DEFAULT, false, true, true); + /** PerformanceProfiler 测试 */ +// PerformanceProfiler.setEnableLog(true); } @Test public void test02PublicFieldBean() { diff --git a/pom.xml b/pom.xml index 4c8fdf29..cf716e7a 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ common java library UTF-8 - 0.5.0 + 0.5.1-SNAPSHOT 1.9.7 true -- Gitee From 4090dc20236371c77415fb917161a9ad8c070927 Mon Sep 17 00:00:00 2001 From: cylzhh Date: Wed, 26 Mar 2025 15:40:53 +0000 Subject: [PATCH 2/2] =?UTF-8?q?update=20common-base/src/main/java/com/gite?= =?UTF-8?q?e/l0km/com4j/base/MiscellaneousUtils.java.=20storeSortedMap?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E7=9A=84lineSeparator=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E6=B2=A1=E7=94=A8=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: cylzhh --- .../main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java b/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java index 1e74d371..98247af8 100644 --- a/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java +++ b/common-base/src/main/java/com/gitee/l0km/com4j/base/MiscellaneousUtils.java @@ -66,7 +66,7 @@ public class MiscellaneousUtils { if(null==lineSeparator){ bw.newLine(); }else{ - bw.write("\n"); + bw.write(lineSeparator); } } bw.flush(); -- Gitee