spring中强大的bean操作类BeanWrapper

对于bean属性的操作,大家熟知的主要有下面这些工具类:
  • Apache的BeanUtils和PropertyUtils
  • cglib的BeanMap和BeanCopier
  • spring的BeanUtils
但是最近我发现,在spring中有一个更强大的操作bean的类BeanWrapper,它的强大体现在下面两个方面:
  1. 支持设置嵌套属性
  2. 支持属性值的类型转换(设置ConversionService)。
这两方面比其他那些工具类好用多了。
示例代码如下:

BeanWrapper beanWrapper = PropertyAccessorFactory.forBeanPropertyAccess( obj);
beanWrapper.setConversionService( conversionService );  //值类型转换,跟spring mvc无缝集成
beanWrapper.setAutoGrowNestedPaths(  true );  //对于null值,是否自动创建新对象
beanWrapper.setPropertyValue( "a[0].b[dd].a" ,  "value" );

嵌套属性支持数组、Map、对象等的嵌套。
值类型转换类ConversionService,Spring中有具体的实现类,里面已经内建了大部分常用的转换,比如字符串转日期、字符串转数值等。

你可能感兴趣的:(java)