基于JavaBean编辑器读取peroperties文件的实例

  

  

最近在重读《精通弹簧+ x + 4. +企业应用开发实战》这本的书,看到了有关JavaBean编辑器的部分,了解到PropertyEditor和BeanInfo的使用。不得不说,BeanInfo是一个很强大的东西,Java中的内省也与之有一点点小关联。

  

<强> JavaBean, PropertyEditor与BeanInfo

  

  

JavaBean是一种Java写成的可重用组件,本质上还是一个Java类,但是与一般Java类的不同,JavaBean必须有一个无参的构造函数,其字段必须私有化,并提供,让方法供外界使用。根据书中所介绍,太阳所制定的JavaBean规范很大程度山是为了IDE准备的——它让IDE能够以可视化的方式设置JavaBean的属性。

  

  

PropertyEditor是属性编辑器的接口,其作用是将一个字符串类型的值转换为JavaBean的属性. java为PropertyEditor提供了一个默认的实现类PropertyEditorSupport。

  

  

BeanInfo用于描述JavaBean哪些属性可以编辑及对应属性编辑器. java为BeanInfo也提供了一个默认实现——SimpleBeanInfo。

  

  

更多有关JavaBean以及这两个接口的知识,可以购买这本书《精通弹簧+ x + 4. +企业应用开发实战》,或者看我的复制

  

<强>一个小例子

  

在《精通弹簧+ 4。x + +企业应用开发实战》中使用的例子是根据《核心Java II》的一个例子改变而成,但是有一个小缺点,该例子使用到了秋千,演示时需要将代码打成JAR包,使用IDE组件扩展管理功能注册到IDE中,不太方便,因此我特意尝试用JavaBean编辑器读取属性文件作为一个小例子。

  

  

我们先定义一个人类,用作JavaBean
  

     /* *   *一个简单的JavaBean   * @author在   *   */公共类人实现Serializable {      私有静态最终长serialVersionUID=6366021085463785872 l;/* *   * 姓名   */私人字符串名称;/* *   * 年龄   */私人int年龄;/* *   *性别   */私人性别性别;/* *   *生日   */私人生日日期;/* *   *是否结的婚   */私人布尔结婚;      公共字符串getName () {   返回名称;   }   公共空间setName(字符串名称){   this.name=名称;   }   公共int getAge () {   返回年龄;   }   公共空间setAge (int年龄){   这一点。年龄=年龄;   }   公众的性别getGender () {   返回性别;   }   公共空间setGender(性别性别){   这一点。性别=性别;   }   上市日期getBirthday () {   返回的生日;   }   公共空间setBirthday(日期的生日){   这一点。生日=生日;   }   公共布尔isMarried () {   返回结婚;   }   公共空间setMarried(布尔结婚){   这一点。结婚=结婚;   }      公众人物(){   超级();   }      @Override   公共字符串toString () {   返回“人(name=" +名字+ ",年龄=? +”时代,性别=" +性别+”,生日=生日“+ +”,结婚="   +结婚+“]”;   }   }      

其中性别是我自定义的枚举,其代码如下:
  

     /* *   *表示性别的枚举类   * @author在   *   */公共enum性别{   M(1,“男”),F(2,“女”);   私人int id;   私人字符串genderName;      公共字符串getGenderName () {   返回genderName;   }      性别(int id字符串genderName) {   这一点。id=id;   这一点。genderName=genderName;   }      公共静态性别getGender (int id) {   (性别性别:值()){   如果性别。id==id) {   返回性别;   }   }   返回M;   }      公共静态性别getGender(字符串genderName) {   (性别性别:值()){   如果性别。genderName==genderName) {   返回性别;   }   }   返回M;   }   }      

<>强实现PropertyEditor

  

人类中有5个字段,分别使用字符串,int,性别、日期和布尔这5中类型,其中对字符串类型变量名称我们使用PropertyEditorSupport这个默认实现就可以了,其他的类型我们需要自定义去实现PropertyEditor接口,int对应IntegerPropertyEditor,性别对应GenderPropertyEditor,日期对应DatePropertyEditor以及布尔对应BooleanPropertyEditor。

  

<强> IntegerPropertyEditor

  

IntegerPropertyEditor类继承了PropertyEditorSupport类和实现PropertyEditor接口(一个人习惯实现接口的时候同时继承一个默认实现,这样我可以只关心我所需要实现的方法,当然,这个默认实现最好是一个抽象类),重写了getAsText()方法和setAsText文本(字符串),其代码如下:

基于JavaBean编辑器读取peroperties文件的实例