Java学习笔记_13_空属性赋值问题+aspect日志

本文探讨了在Java开发中使用BeanUtils.copyProperties进行对象更新时可能遇到的空属性赋值问题,指出该方法可能导致原有数据被覆盖,并提出了解决方案。此外,还介绍了AOP(面向切面编程)的概念及其在日志记录中的应用,包括@Aspect、@Pointcut、@Before等注解的使用。
摘要由CSDN通过智能技术生成

1.空属性赋值问题

这次开发使用的是BeanUtils.copyProperties(A,B)来完成的对象的更新。
BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。
BeanUtils.copyProperties(A,B)的特点是:

  1. 无论是org.springframework.beans或者org.apache.commons.beanutils,与get/set方式相比,都存在性能问题。
  2. 效率由高到低:get/set >PropertyUtils >BeanUtils。
  3. PropertyUtils和BeanUtils两个工具类都是对bean之间存在属性名相同的属性进行处理,无论是源bean或者是目标bean中多出来的属性均不处理。
  4. 具体来说:BeanUtils.copyProperties()可以在一定范围内进行类型转换,同时还要注意一些不能转换时候,会将默认null值转化成0;

复制属性的时候,BeanUtils.copyProperties(a,b)会将a的所有属性全部赋值给b,如果a存在null属性,会将b属性原有数据覆盖,比如在更新一篇文章时,更新后的新文章创建时间如果置空,就会覆盖原来的创建时间,解决方案是遍历检查是否有null值
如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值