JavaBean规范

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaBean规范相关的知识,希望对你有一定的参考价值。

JavaBean-日常笔记


 

什么是JavaBean?

  简单来说,JavaBean是一种符合Java语法的可重用的组件(类)。

  Web应用程序中使用的JavaBean一般要满足如下要求:

  • 类必须要使用public修饰。
  • 必须要有一个访问权限为public的无参构造器。
  • 属性的访问权限为private。
  • 属性类型必须为String或者基本类型。
  • 属性名和类型由获取方法(getter)和设置方法(setter)推导而出。
  • 必须按命名约定来命名访问权限为public的获取方法和设置方法。
  • 设置方法的参数类型和获取方法的返回类型必须相同。

 

JavaBean 

  1)JavaBean成员有:方法(Method)、事件(Event)、属性(property)。

    这里的属性是property而不是attribute

1)attribute:表示状态,常认为字段(Field)是属性attribute。

2)property:也表示状态,但是不是字段,是由类中属性的操作方法(getter/setter)来决定属性名称。

 

    设置属性值:writableMethod:setter方法

    获取属性值:readableMethod:getter方法

    ex: setName/getName-->属性:name

          setAge/getAge-->属性:age

    如果数据类型为boolean,则为is方法。

 

  2)内省机制(Introspector):操作(获取/设置)JavaBean中的方法/属性/事件。

    使用static BeanInfo getBeanInfo(Class<?> beanClass)来获取指定字节码对象的JavaBean信息对象。

    例如现有Person类,含属性(name,age)以及相应的getter和setter方法。

    则可以使用Beaninfo bi = Introspector.getBeanInfo(Person.class);获取到Person中的所有属性。

public class Person {
    private String name;
    private Integer age;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }    
}

    常用方法:

      1.PropertyDescriptor[ ] getPropertyDescriptors();获取JavaBean中的所有属性描述符。

public class IntrospectorDemo {
    public static void main(String[] args) throws IntrospectionException {
        BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);
        PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
        for (PropertyDescriptor pd : pds) {
            //得到每一个属性的描述器
            System.out.println("属性名称:"+pd.getName());
            System.out.println("属性类型:"+pd.getPropertyType());
            System.out.println("set方法"+pd.getWriteMethod());
            System.out.println("get方法"+pd.getReadMethod());
        }
    }
}

    输出结果:

    技术分享

 

   3)BeanUtils的使用

    开发中,常用Apache common中的BeanUtils工具来操作JavaBean。

    可以通过内省技术进行数据的封装,但是每一次写内省程序是一件很麻烦的事情,并且内省匹配也会有问题(例如一侧是String,一侧是int,还需要进行数据转化),

    因此,内省(基于反射,方便操作javabean的API)封装form数据到javabean的代码,一般不自己编写,使用已经编写好的工具开发包BeanUtils开发包。

    使用该工具前,需要提前去导入相应的jar包。

    下载BeanUtils的jar :commons-beanutils 、commons-logging,需要同时下载这两个jar包,前者依赖后者。

    这里就直接说明一些常用方法。

    1.BeanUtils.setProperty(Bean对象,属性,属性的值);

    2.BeanUtils.getProperty(Bean对象,属性);

    3.BeanUtils.copyProperties(Bean对象,Bean对象);

    属性拷贝:可以从JavaBean-->JavaBean, Map-->JavaBean(需要导common-collections包)。

 

技术分享



以上是关于JavaBean规范的主要内容,如果未能解决你的问题,请参考以下文章

JavaBean规范

javaBean规范

JavaBean规范

jsp基础语言-jsp代码段

JavaBean规范

JavaBean 规范