浅谈春天的属性编辑器的使用

  

在春天配置文件中,我们往往通过字面值设置Bean各种类型的属性值,这个功能是通过属性编辑器实现的。

  

任何实现了java.beans。PropertyEditor接口的类都是属性编辑器。它可以将外部需要设置的值转换为JVM内部的对应类型,所以属性编辑器其实就是一个类型转换器。

  

<强> 1 JavaBean编辑器
  

  

太阳所制定的JavaBean编辑器,很大程度上是为IDE准备的。它让IDE能够以可视化的方式来设置JavaBean的属性。

  

Java通过java.beans。PropertyEditor定义了设置JavaBean属性的方法,通过BeanInfo描述了JavaBean哪些属性是可定制的,此外还描述了可定制属性与PropertyEditor之间的对应关系。

  

BeanInfo与JavaBean之间的对应关系,通过两者之间规范的命名确立,对应JavaBean的BeanInfo采用如下命名规范:& lt; Bean> BeanInfo。如BookBean对应的BeanInfo为BookBeanBeanInfo。当JavaBean连同其属性编辑器注册到IDE后,当在开发界面中对JavaBean进行定制时,IDE就会根据JavaBean规范找到对应的BeanInfo,然后再根据BeanInfo中的描述信息找到JavaBean属性描述(使用哪个属性编辑器等),进而为JavaBean生成特定开发编辑界面。

  

Java提供了一个用于管理默认属性编辑器的管理器:PropertyEditorManager,它保存着一些常见类型的属性编辑器,如果某个JavaBean的常见类型属性没有通过BeanInfo显式指定它的属性编辑器,那么IDE将自动使用PropertyEditorManager中注册的对应属性的默认编辑器。

  

<强> 1.1属性编辑器(PropertyEditor)
  PropertyEditor是属性编辑器接口,它定义了将外部设置值转换为内部JavaBean属性值的接口方法。主要接口方法说明如下:

  

           方法   说明               对象getValue ()   返回属性的当前值,基本类型被封装成对应的包装类型         无效的setValue(对象newValue)   设置属性的值,基本类型以包装类型传入         字符串getAsText ()   用字符串来表示属性对象,以便外部的属性编辑器能够以可视化的方式显示。默认返回零,表示该属性不能以字符串表示。         空白setAsText(字符串文本)   用一个字符串去更新属性的内部值,它一般从外部属性编辑器传入的。         String [] getTags ()   返回表示有效属性值的字符串数组,以便属性编辑器能够以下拉框的方式进行展示。默认返回零。         字符串getJavaInitializationString ()   为属性提供初始值,属性编辑器以此值作为属性的默认值。            

  

PropertyEditor接口是内部属性值和外部设置值的沟通桥梁。

  

Java为PropertyEditor提供了一个方便的实现类:PropertyEditorSupport,该类实现了PropertyEditor接口,我们可以通过扩展这个类来设计自己的属性编辑器。

  

<强> 1.2豆属性描述(BeanInfo)
  

  

BeanInfo描述了JavaBean中的可编辑属性以及对应的属性编辑器,每一个属性对应一个属性描述器PropertyDescriptor。

  

PropertyDescriptor的构造函数有两个入参:PropertyDescriptor(字符串propertyName类beanClass),其中propertyName为属性名;beanClass是JavaBean所对应的类。

  

PropertyDescriptor还有一个setPropertyEditorClass(类propertyEditorClass)方法,它可以为JavaBean属性指定编辑器。

  

BeanInfo接口中最重要的方法是:PropertyDescriptor [] getPropertyDescriptors(),它会返回JavaBean的属性描述器数组。

  

BeanInfo接口的一个常用的实现类是SimpleBeanInfo,我们可以通过扩展这个类来实现自定义的功能。

  

<强> 2春天默认属性编辑器
  

  

春季的属性编辑器与传统的用于IDE开发的属性编辑器不同,它没有UI界面,只是将配置文件中的文本配置值转换为豆属性的对应值。

  

春在PropertyEditorRegistrySupport中为常见的属性类型提供了默认属性编辑器,分为3大类,共32个有:

  

           类型   说明               基础数据类型   【1】基本数据类型,如:布尔,int等;【2】基本数据类型封装类,如:boolean、Integer等;【3】基本数据类型数组:char[][]和字节;【4】大数:BigDecimal先导入BigInteger。和         集合类   集合,集合,SortedSet,列表和SortedMap。         资源类   类,类[],文件,InputStream、语言环境、属性、资源[]和URL。            

浅谈春天的属性编辑器的使用