构造bean时的哪种数据组装方式更好

我有一个bean B, 它继承自bean A, 并包含了自己的一些属性,而且这些属性的值都需要通过一些service的方法获取,现在我要通过A来构造一个B的实例,想知道设置那些属性值的逻辑是放到构造器中好,还是放在service中比较好,下面是两种方式的伪代码

public B(A a){
    BeanUtils.copyPropertities(a, this);
    this.attr1 = service1.getAttr1(a);
    this.attr2 = service2.getAttr2(a);
}


public B getB(A a){
    B b = new B();
    BeanUtils.copyPropertities(a, b);
    b.setAttr1(service1.getAttr1(a));
    b.setAttr2(service2.getAttr2(a));
}

http://blog.csdn.net/hongmeikaile/article/details/6522275