本文目录一览:
- 1、BeanUtils.copyProperties默认忽视null属性解决方案
- 2、BeanUtilscopyproperties集合属性可以复制吗
- 3、泰语的`我爱你`怎么说
- 4、propertydescriptor是用来干什么的
- 5、Nifi:nifi内置处理器Processor的开发
BeanUtils.copyProperties默认忽视null属性解决方案
核心解决方案通过反射获取源对象的null属性名列表propertydescriptor,并将其作为忽略参数传入copyProperties方法。
修复方案:忽略copy字段:使用BeanUtils.copyNotNullProperties方法propertydescriptor,并明确指定忽略ID等关键字段。使用get/set替代copy:在需要copy属性的地方,使用get/set方法手动设置属性,以避免因字段名称相同但类型不同而导致的错误。
Spring的BeanUtils.copyProperties方法基于Java反射实现,仅拷贝源对象中的属性,而Hutool的BeanUtil.copyProperties方法则基于ASM字节码操作,提供更全面的属性复制功能,包括自定义映射规则、字段过滤和类型转换。要实现属性拷贝,可以使用Hutool中的BeanUtil.copyProperties()方法。
首先,尝试简化代码以定位问题,发现没有加@Data注解导致getter和setter方法缺失,导致属性复制失败。加上@Data注解后,基本属性复制成功,但静态内部类依然为null。由此确认问题在于静态内部类的复制。解决方案是将静态内部类单独处理,进行单独复制。
我们项目中经常使用Spring的BeanUtils.copyProperties()方法,进行对象之间属性的拷贝,来替换繁琐的get()、set()方法。但是稍加不注意,使用此方法就会出现意向不到的问题。今天就聊聊常见的坑,并从源码角度分析问题出现的原因。
问题代码的核心在于使用propertydescriptor了Spring的BeanUtils进行属性拷贝时,默认是浅拷贝而非深拷贝,导致引用类型的属性在两个对象间共享,修改一个会影响另一个。问题代码分析代码场景在订单修改逻辑中,通过BeanUtils.copyProperties复制原始订单对象到新对象,意图避免直接修改原始数据。
BeanUtilscopyproperties集合属性可以复制吗
1、通过JDK内置propertydescriptor的反射APIpropertydescriptor,BeanUtils能够动态地获取和设置类的属性值,实现类的转换。然而,它对支持的数据类型有特定的要求。
2、在拷贝过程中,BeanUtils.copyProperties()实现的是浅拷贝。浅拷贝意味着只复制对象的引用,而不复制引用指向的对象本身。因此,如果源对象和目标对象的某个属性是对象类型(如自定义类、集合等),则这两个属性在内存中引用的是同一个对象。
3、不过,BeanUtils并不是在任何情况下都可以随意使用。在使用之前,我们需要了解它是如何工作的。BeanUtils是进行浅拷贝操作,这意味着它仅复制对象的基本类型属性,对于对象类型的属性,它只是复制引用而不是实际的对象。
4、可以通过代码示例来观察BeanUtils.copyProperties在浅拷贝中的行为,特别是当涉及到对象类型属性时。综上所述,BeanUtils.copyProperties是一个实用的工具方法,适用于基本类型属性的复制,但在涉及对象类型属性时需要注意其浅拷贝的特性。
5、全面测试:在使用BeanUtils.copyProperties方法时,应进行全面的测试,确保所有属性都能正确复制。特别是对于那些复杂类型,更应进行详细的测试。日志记录:在复制过程中添加日志记录,可以帮助开发者快速定位问题所在。
泰语的`我爱你`怎么说
对男性说) - Chan rak khun /Chan 女性使用的我 rak “爱”khun、不分男女都可以被称呼的“你” 。
泰语中“我爱你”的表达为:Sakula dee。Sakul:表示关心、爱护的情感。dee:是一个常用的表达情感的后缀,用于强调某种情感或语气。在泰国文化中,“我爱你”是一个重要的情感宣言,常常伴随着微笑、眼神交流等肢体动作,以传递更加真挚的情感。
泰语中的我爱你表达为chan rak khun。chan:意为真诚。rak:代表爱。khun:是对恋人的尊称。这四个音节结合起来,就传达了深深的爱意,是一种深情的表白。
在探索多元语言的魅力中,泰语中的我爱你如何表达呢?答案是chan rak khun,这是一种深情的表白。泰语中的chan意为真诚,rak则代表爱,而khun是对恋人的尊称,结合起来就传达了深深的爱意。如果你想要用泰语向心爱的人表达这种感情,记住这四个音节就足够了。
泰语中我爱你的表达方式是PropertyDescriptor Mā khor buang。解释:在泰语中,表达情感的方式与汉语有所不同。泰语中的我爱你是一种直白的表达方式,常用于情侣之间的情感交流。这种表达方式的构成相对简单,但足以传达深厚的情感。
propertydescriptor是用来干什么的
通过存储器导出一个属性 getPropertyType():获取属性的class对象getReadMethod(),获得用于读取属性值的方法;getWriteMethod(),获得用于写入属性值的方法。
一般的做法是通过类Introspector来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。
JavaScript中的ProxyProxy是ES6中提供的新的API,可以用来定义对象各种基本操作的自定义行为 (在文档中被称为traps,我觉得可以理解为一个针对对象各种行为的钩子),拿它可以做很多有意思的事情,在我们需要对一些对象的行为进行控制时将变得非常有效。
Nifi:nifi内置处理器Processor的开发
Nifi提供两种主要的自定义处理器项目搭建方式。第一种方式是遵循maven项目规范,通过一个根项目nifi-example-bundle,包含两个子模块nifi-nifi-example-nar和nifi-nifi-example-processors。第二种方式较为独立,仅将项目作为maven项目构建,但操作更为直观、方便,适合初学者。
Nifi的工作方式是将数据看作水管中的水,沿着流程管道流动。在任意节点处可以拦截“水流”进行改造,然后继续流动。节点是Nifi的Processor,不同的模块有不同的功能。节点间的通道叫Relationship,充当水管,将上节点处理完的数据传递到下节点。
NiFi中的模板功能允许用户创建可重用的子流程,简化复杂数据流的设计。通过模板管理,用户可以创建、导入、导出和管理这些模板,提高数据流设计的效率和可维护性。运行情况信息查看 NiFi提供了多种工具来监控和查看系统的运行情况,包括:状态栏:提供关键性能指标,如CPU使用率、内存占用等。
fileSize:文件内容的字节数。用户还可通过处理器添加自定义属性,使用UpdateAttribute处理器配置,并通过表达式语言在属性值中进行复杂的操作。模板与运行情况查看NiFi中的模板功能允许用户创建可重用的子流程,简化复杂数据流的设计。模板管理允许用户创建、导入、导出和管理这些模板。
监控日志文件生产到Kafka的配置与测试流程 配置“TailFile”处理器创建处理器:在NiFi界面中,添加“TailFile”处理器。配置处理器属性,确保指定正确的文件路径(如/root/test/logdata)。注意:在NiFi集群的每个节点上都需要创建该文件,且logdata应为文件而非目录。

还木有评论哦,快来抢沙发吧~