Apache-commons,Spring,hutoo提供的常用工具

Posted 打工人丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache-commons,Spring,hutoo提供的常用工具相关的知识,希望对你有一定的参考价值。

1. Apache-commons

官网:https://commons.apache.org/
在首页就能看到它提供的各种包,引入包就能使用里面的工具类


1.1 常用工具包简介

Commons BeanUtils:针对Bean的一个工具集。由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装。


Commons CLI:这是一个处理命令的工具。用于解析传递给程序的命令行选项。


Commons Codec: 用来编码和解码的,包括常见的Base64,URL,Soundx,Hex编码等。


Commons Collections:可以把这个工具看成是对JAVA中的集合的扩展。


Commons Configuration:帮助读取处理配置文件的,支持很多配置文件格式。这些文件可以是属性文件、XML 文档、INI 文件等格式的配置文件。


Commons HttpClient:可以方便通过编程的方式去访问网站。


Commons IO:可以看成是java.io的扩展。


Commons Lang:可以看成是对java.lang的扩展。




2. Spring

https://wangmaoxiong.blog.csdn.net/article/details/106843190

Apache-commons.BeanUtils浅析

 

BeanUtils:通过反射控制JavaBean属性的实用方法。
     1.cloneBean(Object) Object
         克隆一个bean是基于可用属性的get和set方法,即使这个bean类没有实现Cloneable接口方法的实现是有BeanUtilBean的newbean = bean.getClass().newInstance();
对newbean的属性设值采用PropertyUtilsBean.copyProperties内部采用java的内省调用get/set方法进行获取bean属性/设置newbean属性。
    API:
      Note: this method creates a shallow clone.采用浅复制的方式
    实例:

技术分享
 1  public class Address
 2 {
 3     private String province;
 4     private String city;
 5     //getter/setter
 6 }
 7  public class Person
 8 {
 9     private Integer id;
10     private String name;
11     private Address address;
12     //getter/setter
13 }
14 public void test1()
15 {
16     Person bean = new Person();
17     Address address = new Address();
18     address.setProvince("hunan");
19     address.setCity("huaihua");
20     bean.setId(1);
21     bean.setName("name1");
22     bean.setAddress(address);
23     try
24     {
25         //----test shadow clone bean----
26         Person bean2 = (Person) BeanUtils.cloneBean(bean);
27         bean2.getAddress().setProvince("beijing");
28         bean2.getAddress().setCity("beijing");
29         System.out.println(bean.getAddress()+":::"+bean2.getAddress());
30         
31     }catch(Exception e)
32     {
33         e.printStackTrace();
34     }
35 }
View Code

  结果:
    Address [province=beijing, city=beijing]:::Address [province=beijing, city=beijing]

  2.copyProperties(Object dest, Object orig)
            复制属性值从源bean到目标bean对于所有的属性,采用的是shallow copy方式,内部采用内省的方式获取get/set方法来获取源对象的属性和对目标对象的设值。
       实例:

    

技术分享
 1 @Test
 2 public void testcopyProperties()
 3 {
 4     Person bean = new Person();
 5     Address address = new Address();
 6     address.setProvince("hunan");
 7     address.setCity("huaihua");
 8     bean.setId(1);
 9     bean.setName("name1");
10     bean.setAddress(address);
11     Person dest = new Person();
12     try
13     {
14         BeanUtils.copyProperties(dest, bean);
15         System.out.println("dest "+dest);
16     }catch(Exception e)
17     {
18         e.printStackTrace();
19     }
20 }
View Code

  结果:
    dest Person [id=1, name=name1, address=Address [province=hunan, city=huaihua]]

  实例:

    

技术分享
 1 public class Student
 2 {
 3     private Integer id;
 4     private String name;
 5     private Date date;
 6     //gettter/settter
 7 }
 8 @Test
 9 public void testcopyProperties()
10 {
11     Person bean = new Person();
12     Address address = new Address();
13     address.setProvince("hunan");
14     address.setCity("huaihua");
15     bean.setId(1);
16     bean.setName("name1");
17     bean.setAddress(address);
18     Student dest = new Student();
19     try
20     {
21         BeanUtils.copyProperties(dest, bean);
22         System.out.println(dest);
23     }catch(Exception e)
24     {
25         e.printStackTrace();
26     }
27 }
View Code

  结果:
    Student [id=1, name=name1, date=null]

  3.copyProperty(Object bean, String name, Object value)
    复制一个具体的属性值到具体的bean中,并执行所需的任何类型转换。采用内省的方式对bean进行设值。
  4.Map<String, String> describe(Object bean)
    返回指定的实体提供一个读方法的全部属性集。注:任何一个类都是Object的子类,在子类中存在getClass(),会被继承读方法,同时也会被作为集合的属性。

  实例:

    

技术分享
 1 @Test
 2 public void testDescribe()
 3 {
 4     Person bean = new Person();
 5     bean.setId(1);
 6     bean.setName("world");
 7     try
 8     {
 9         Map<String, String> map =  BeanUtils.describe(bean);
10         System.out.println("map: "+map);
11     } catch (IllegalAccessException e)
12     {
13         e.printStackTrace();
14     } catch (InvocationTargetException e)
15     {
16         e.printStackTrace();
17     } catch (NoSuchMethodException e)
18     {
19         e.printStackTrace();
20     }
21 }
View Code

  结果:
    map: {address=null, name=world, id=1, class="class" com.beanutil.px.Person}

  5.String getProperty(Object bean, String name)
    获取bean指定的属性值,内部采用内省的方式获取调用get方法
  6. populate(Object bean, Map<String, ? extends Object> properties)
    采用Map作为参数对bean进行设值。内部通过遍历Map调用setProperty(bean, name, value)设值
  String[] getArrayProperty(Object bean, String name)
    返回一个指定的数组属性,作为String[]返回
  String getIndexedProperty(Object bean, String name)
    返回bean中属性的索引值
  String getMappedProperty(Object bean, String name)
  String getMappedProperty(Object bean, String name, String key)

以上是关于Apache-commons,Spring,hutoo提供的常用工具的主要内容,如果未能解决你的问题,请参考以下文章

Apache-commons.BeanUtils浅析

使用 Barnes-Hut 进行图形放置的优化问题

HUT 线段树练习 部分题解

Bean 字段复制利器 MapStruct

如何把2个数组合并为一个数组

城市天气数据获取接口