import org.springframework.cglib.beans.BeanCopier;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class BeanCopierUtils {
private static Lock initLock = new ReentrantLock();
private static Map<String, BeanCopier> beanCopierMap = new ConcurrentHashMap<>();
private static BeanCopier init(Class source, Class target) {
initLock.lock();
String key = genKey(source, target);
BeanCopier beanCopier = beanCopierMap.get(key);
if (null != beanCopier) {
initLock.unlock();
return beanCopier;
}
BeanCopier newBeanCopier = BeanCopier.create(source, target, false);
beanCopierMap.put(key, newBeanCopier);
initLock.unlock();
return newBeanCopier;
}
private static String genKey(Class<?> src, Class<?> dest) {
return src.getName() + "_" + dest.getName();
}
public static void copy(Object src, Object dest) {
String key = genKey(src.getClass(), dest.getClass());
BeanCopier beanCopier = null;
if (!beanCopierMap.containsKey(key)) {
beanCopier = init(src.getClass(), dest.getClass());
} else {
beanCopier = beanCopierMap.get(key);
}
beanCopier.copy(src, dest, null);
}
}
BeanCopierUtils
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 她是辽国历史上最有名的才女,同时美貌也冠绝天下,但是却因为一首香艳的诗词而被错怪杀害,由此牡丹花下一抔土,一场遗恨...