陪你到永远 2017-10-25 02:08 采纳率: 0%
浏览 680
已结题

关于使用spring注解的问题

先贴代码:
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条回答 默认 最新

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

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记