陪你到永远 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 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100