java对象属性复制

May 13, 2014

java对象属性复制的工具类很多,常用的有org.springframework.beans.BeanUtils#copyProperties,org.apache.commons.beanutils.BeanUtils#copyProperties,这两个都是通过反射实现的,性能嘛,你关心TA就在那里,你不关心TA还是在那里. 高级点的有net.sf.cglib.beans.BeanCopier,通过生成源代码实现属性复制,但是他的api很难使用.而且不支持基本类型和包装器类型的转换(java的boxing和unboxing只是语法糖而已).

so,重新造了个轮子,采用javassit来生成源代码,并且提供方便使用的api.

使用就像下面这样:

TestBean target = new TestBean();
Copier.copy(TestBean1.createTest(), target);

TA生成的源代码如下:

public class CopierImpl1002
 	 implements Copier.Copy
{
  public void copy(Object paramObject1, Object paramObject2)
  {
    TestBean localTestBean = (TestBean)paramObject1;
	TestBean1 localTestBean1 = (TestBean1)paramObject2;
	if (localTestBean.getA1() != null)
  		localTestBean1.setA1(localTestBean.getA1().longValue());
	localTestBean1.setA10(localTestBean.getA10());
 	   	localTestBean1.setA2(localTestBean.isA2());
 	  	localTestBean1.setA3(Integer.valueOf(localTestBean.getA3()));
   		localTestBean1.setB8(Short.valueOf(localTestBean.getB8()));
  	  	localTestBean1.setList(localTestBean.getList());
 	 }
}

源代码见:https://gist.github.com/bohrqiu/5046a2a7d983996f0e5a

2016年05月Reading Notes

## 服务发现服务发现用于动态感知服务提供方地址,并提供服务路由分发策略能力。### 客户端发现客户端从注册中心获取服务列表,客户端监听服务列表的变化,客户端通过路由策略选择合适的服务端地址。服务端在停服务时,需要先通知客户端不要发送新请求过来,等服务端把当前请求处理完后,...… Continue reading

2016年05月Reading Notes

Published on June 19, 2016

2016年05月Reading Notes

Published on May 11, 2016