开发中的菜鸟学经验(一)

一、接口中传值一定要传不变的那个值

需求介绍
  在这次需求的开发中有一个特别简单的功能,就是根据手机型号显示设备名称。手机型号字段为phoneModel,设备名称字段为deviceName。
个人最初想法
  由于我们(APP后台)要和PC端共同使用的数据是要同步,每次PC端更新了数据,我这边就要同步数据库,所以我当时就想,我们只需要判断在接受来自客户端的phoneModel后,判断它对应的deviceName,然后最终把deviceName传给双方就可以了,这样就不需要二次判断了。
被同事告诉自己的错误想法
  在和PC端商量的过程中被同事说这样不对,传值要传那个不变的结果,虽然我现在是双方都少了一次判断的过程,但是deviceName是由产品经理设计文案的,也许以后很多phoneModel对应同一个deviceName或者改变deviceName的值,这样就会使得之前的历史数据不能更新,也找不到对应的phoneModel,但是phoneModel是永远不变的,以后更新数据后只不过需要刷新一下数据就可以了。
总结
  在以后任何接口、方法传值的时候要考虑需要
  (1)在数据库保留的数据是什么;
  (2)在客户端显示的是什么;
  (3)在后台系统、数据库中不能损失原数据,并且要保障在不损失原数据的前提下保障完成业务的需求;
  作为刚步入职场的菜鸟,很愿意遇到更多的问题,这样就可以在实践中一点点的成长,感谢同事的热心提醒,否则后期数据可能将作废。

二、数据库返回的结果和最终要返回给客户端的结果不一致需要在哪里处理呢?

我的想法
  由于我们这个问题涉及到许多之前已经完成的需求,所以必须找到一个统一的地方,一次性处理,这样就不需要改变以往的程序。这个想法是对的,但是在代码中找来找去只找到了在读取数据库的时候有个统一读取数据并给对象赋值的地方,所以我就觉得在数据库中统一改代码。
测试过程中发现数据不同步
  由于代码中在数据添加成功的时候就直接将数据放入缓存了,所以在第一次读取缓存的时候就只显示原数据phoneModel没有显示映射的数据deviceName,清楚缓存后再次请求数据才是对的。在调试的过程中正好被经过的老大问了一下遇到什么问题了,我就将这一问题解释了一遍。结果又学到了知识。
正确的做法
  我想改一次代码适用于所有的方法是正确的,但是我不应该在Dao层改代码,这个属于Controller层最终要显示的代码,要根据你的代码所处的逻辑层在不同的层修改。如果我在Dao层修改了数据,这样以后只要调用dao层的这个封装对象的方法都不会返回原数据,而是被修改的数据,这样会应该其他业务。
  而我这个只需要在Controller层返回json串的时候统一处理返回客户端需要的结果就可以了。最后在Article类中做的统一处理。
总结
  对数据做处理的时候,我们要考虑他属于那个层面的,
  (1)接口一些基本数据并做基础的判断,或者判断数据的合法性,以及返回给客户端的接口的这些代码要写在Controller层;
  (2)对接收到正确的数据后,对数据做一些业务逻辑处理,比如什么时候需要添加数据,什么时候需要修改数据等等,都属于业务层,要写在Service层中;
  (3)需要对操作数据库的写在Dao层,并且不能对数据做修改;

三、Spring MVC中工具类调用service类对象为null的处理方法

由于工具类就和普通类一样,在spring mvc 中直接声明成员属性并添加set方法或者直接new都不可以,结果一直为null,调用相应的方法报空指针异常错误。

@Component
public class Person{
	private String name;
	private int age;
	@Autowired
	private PersonService personService;
	
	public void setPersonService(PersonService personService){
	  	this.personService = personService;
    }
}

上面这种方法,调用时会发现personSerivce 为null
在放上找个几个方法,其中一个是可以的,就是将personService设置为静态的,然后使用类名.属性名,最后@Autowired放在set方法上

@Component
public class Person{
	private String name;
	private int age;
	private static PersonService personService;
	
	@Autowired
	public void setPersonService(PersonService personService){
	  	this.personService = personService;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值