点击登录,精彩内容等着你

必掌握工具类(2)commons-beanutils,简化对JavaBean的操作,几乎所有的项目都会用到它

全栈侠客

2022-10-01
beanutils用于简化操作javaBean的操作,提供便捷的互换操作方式,常常在数据传输前后进行互换,提供安全便捷的方式

commons-beanutils包,有重要的几个使用频率高的工具类,分别是

  • BeanUtils针对实体JavaBean的属性对象的操作工具类
  • PropertyUtils通过反射对对象的属性做各种操作
  • MethodUtils针对反射对象的工具类
  • ConvertUtils针对数据类型相互转换

Maven引入

  1. <dependency>
  2. <groupId>commons-beanutils</groupId>
  3. <artifactId>commons-beanutils</artifactId>
  4. <version>1.9.4</version>
  5. </dependency>

一、BeanUtils:

1.使用场景

  • beanUtils对javaBean的属性或属性对象进行赋值
  • beanUtils获取javaBean属性
  • beanUtils克隆javaBean
  • beanUtils将javaBean转换为Map
  • beanUtils将Map转换为javaBean
  • beanUtils获取javaBean的数组集合字段值
  • beanUtils获取javaBean的Map字段值
  • beanUtils获取javaBean的嵌套字段值

注意点:
BeanUtils.copyProperties 相同的属性赋值 会被覆盖。

2.使用频率多的方法

  1. //将Map转换成对象(json组件中,将大量使用该方法,用于json与javaBean的互相转换)
  2. void populate(final Object bean, final Map<String, ? extends Object> properties)
  3. //设置属性值
  4. static void setProperty(final Object bean, final String name, final Object value)
  5. //获得属性值作为字符串返回
  6. static String getProperty(final Object bean, final String name)
  7. ...还有很多大同小异的方法,请自行参考

二、PropertyUtils

通过反射对对象的属性做各种操作,一般包括set与get的操作;

1. 使用场景

当目标实体类,经过泛型的T的,作为参数传入等,在操作相关属性的时候,就能通过该工具类进行方便的读取与赋值指定属性。

精益编程中,关于MVC增强模块中,大量对该工具类使用,通过反射机制对未确定具体类的操作,能解决掉一些:通用的方法调用的情况

2.使用频率多的方法

  1. //获得嵌套属性,属性是对象的情况
  2. getNestedProperty(final Object bean, final String name)
  3. //获得属性
  4. getProperty(final Object bean, final String name)
  5. //获取属性描述
  6. getPropertyDescriptor(final Object bean,final String name)
  7. //获得属性类型
  8. static Class<?> getPropertyType(final Object bean, final String name)
  9. //判断是否为可读属性
  10. static boolean isReadable(final Object bean, final String name)
  11. //判断是否为可写属性
  12. static boolean isWriteable(final Object bean, final String name)
  13. //设置属性值
  14. static void setProperty(final Object bean, final String name, final Object value)
  15. //设置属性值
  16. static void setSimpleProperty(final Object bean, final String name, final Object value)

更多方法,请前往该类进行查看,根据实际情况进行查看是否有可用的方法

三、MethodUtils

1. 使用场景

反射操作,执行一个类的特定的方法

  1. invokeMethod(final Object object,final String methodName,final Object arg)
  2. //还有很多类型的方法,请使用的时候,多多参考

四、ConvertUtils

提供了数据类型相互转换的一些方法,对转换提供比较方便的转换安全方法。

五、总结

  • 我们在使用一些通用的工具类的时候,需要总结一下经验,为自己编写特有的工具类,做好一些参考。
  • 工具类一般有一些共同的特征:
    1. 提供的方法一般都是static的方法,方便使用
    2. 一些方法参数,就是待操作的对象,要理解java的值传播的特性(简单来说就是:作为参数传播对象[非基础类型]的,都是传播对象的引用,方法中对该引用进行操作,实际是全局修改这个对象)
    3. 方法一般分为:通用方法与特有数据类型的方法
      • 通用方法:一般就是传入泛型,Class类型的方法,使用的时候,根据传入参数对象,则操作不同对象类型,灵活通用;
        特有数据类型方法:一般都是制定数据类型,用于操作特点数据类型进行的方法,可以参考fastjson2中的JSONObject就能看出一二;
  • 对于一些跟业务关系密切,而且经常重复使用的一些方法,可以考虑分拆出来,组成工具类,有利于统一管理。
阅读 1135     最后编辑 2022-10-03 12:23
文章补充
评论(0) 发表新评论
  • ...暂无评论...

我是有底线的 评论与点赞5分钟更新一次
回复评论
取消关闭

请先登录