关于使用spring注解的问题 1C

先贴代码:
import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.cn.su.dao.PaymentMapper;
import com.cn.su.entity.Payment;
import com.cn.su.service.PaymentService;
import com.cn.su.vo.PaymentVo;
@Service
public class PaymentServiceImpl implements PaymentService{
@Autowired
private PaymentMapper paymentMapper;
@Autowired
private PaymentVo paymentVo;
@Override
public List selectAllPayment(Payment payment) {
List payList = paymentMapper.selectAllPayment(payment);
List paymentVoList = new ArrayList();
for(int i=0;i<payList.size();i++){
double sumPayment = calculateSum(payList.get(i));
//PaymentVo paymentVo = new PaymentVo();
paymentVo.setPayment(payList.get(i));
paymentVo.setSumPay(sumPayment);
paymentVoList.add(paymentVo);
}
return paymentVoList;
}


这里有两个问题,第一个是spring使用代理IOC模式,取消了new一个对象的做法,我们使用注解后通常@Autowire注入,对象可以直接使用,这段代码中有用到list集合,
List paymentVoList = new ArrayList();,这里我用到new,那么集合如果要使用注解的方法,应该怎么写呢?第二个问题,这里注入的实体类
PaymentVo,它是Payment的封装类,但是代码用到循环封装参数,因为用到的PaymentVo这个对象是同一个,而不是new新建一个对象,所以导致最后一条数据覆盖前面数据的现象,导致最后的List里面的数据是重复的数据,编码然来是1,2,3的对象,最后全部变成编码为3的对象,请问这个问题改怎么解决,难道还是要像以前一样new一个新的对象,取消这个使用注解的方式吗?

3个回答

这里有两个问题,第一个是spring使用代理IOC模式,取消了new一个对象的做法,我们使用注解后通常@Autowire注入,对象可以直接使用,这段代码中有用到list集合,
List paymentVoList = new ArrayList();,这里我用到new,那么集合如果要使用注解的方法,应该怎么写呢?第二个问题,这里注入的实体类
PaymentVo,它是Payment的封装类,但是代码用到循环封装参数,因为用到的PaymentVo这个对象是同一个,而不是new新建一个对象,所以导致最后一条数据覆盖前面数据的现象,导致最后的List里面的数据是重复的数据,编码然来是1,2,3的对象,最后全部变成编码为3的对象,请问这个问题改怎么解决,难道还是要像以前一样new一个新的对象,取消这个使用注解的方式啊,

第一个问题:
加到xml配置文件中,你就可以使用了。

第二个问题:
PaymentVo这种添加到list中的对象,最好使用new的方式来创建,如果不使用new的话,也可以使用paymentVo.clone()来添加到list中

第一个问题:
<bean id="paymentVoList" class="java.util.ArrayList"/>加到xml配置文件中,你就可以使用了。

第二个问题:
PaymentVo这种添加到list中的对象,最好使用new的方式来创建,如果不使用new的话,也可以使用paymentVo.clone()来添加到list中

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问