JavaBean的理解
A、JavaBean是一种JAVA语言写成的可重用组件。可重复使用,减少代码冗余,方便维护;
B、简单一点:JavaBean是一种特殊的类,或者说满足一定规范的类;其实就是一个类,只是该类满足一定的规则
PS:把javaBean也可以称为实体类
满足的规则
1、类必须要被public修饰符修饰 【访问权限最大化,非抽象的】
2、对象属性/字段私有化(建议对象属性使用包装类) 【控制直接操作对象属性】
3、必须提供一个公共无参的构造方法 【方便框架或底层通过反射创建对象】
4、必须提供一套公共setter和getter方法 【方便设置和获取属性/el表达式】
Bean属性与对象属性
A、Bean属性 == JavaBean属性:getter和setter方法上的属性,其中getter方法上的属性称之为可读属性,setter方法上面的属性称之为可写属性;
B、对象属性 == 字段,即实例变量;
C、一般情况下bean属行和对象属性拥有相同的名字,当然也可以不一样,甚至没有对象属性;
D、当使用el表达式就是使用的getter方法上的Bean属性获取值的;
实例:
/**
* JavaBean
*/
public class JavaBeanDemo {
//~必须是一个公共的类
//~建议对象属性/字段是私有化
private String name;//对象属性/字段 name
private Integer age;//对象属性/字段 age
private Boolean sex;//对象属性/字段 sex
private boolean value;//对象属性/字段 value
public JavaBeanDemo() {
//~必须提供公共无参方法
}
/**
* ~必须给每个对象属性/字段提供一套setter和getter方法
* 是方法也可叫做属性:
* 属性分为:
* 可读属性 getXxx
*
* 可写属性 setXxx
* 【属性名是把get或者set或is(boolean)去掉,其后面的Xxx但之后首字母要小写xxx才叫属性名,与对象属性/字段无关】
*
* 所以以下有6个属性,一定跟对象属性/字段无关
*
* 一般字段和属性名是一致
*/
public String getpP(){
//bean属性pP【只有一个可读属性】
return "pP";
}
public void setxX(String xx){
//bean属性xX【只有一个可写属性】
System.out.println(xx);
}
public String getName() {
//bean属性name【可读属性】
return name;
}
public void setName(String name) {
//bean属性name【可写属性】
this.name = name;
}
public Integer getAge() {
//bean属性age【可读属性】
return age;
}
public void setAge(Integer age) {
//bean属性age【可写属性】
this.age = age;
}
public Boolean getSex() {
//bean属性sex【可读属性】
return sex;
}
public void setSex(Boolean sex) {
//bean属性sex【可写属性】
this.sex = sex;
}
//注意:基本数据类型boolean的可读属性前面是is
public boolean isValue() {
//bean属性value【可读属性】
return value;
}
public void setValue(boolean value) {
//bean属性value【可写属性】
this.value = value;
}
}
Introspector类
提供了一种标准的工具来了解目标Java Bean支持的属性,事件和方法
static BeanInfo getBeanInfo(类<?> beanClass)
内省Java Bean并了解其所有属性,暴露的方法和事件
参数为JavaBean类字节码;还会拿到父类的属性
获取bean信息
public class JavaBeanText {
@Test
public void testAll() throws IntrospectionException {
//获取bean信息【该方法会抛出异常】
BeanInfo beanInfo = Introspector.getBeanInfo(JavaBeanDemo.class);//会拿到父类里面的属性
System.out.println(beanInfo);//java.beans.GenericBeanInfo@2acf57e3
}
}
static BeanInfo getBeanInfo(类<?> beanClass, 类<?> stopClass)
内省Java bean并了解其属性,暴露的方法,低于给定的“停止”点
参数2,不会拿到父类中的属性
public class JavaBeanText {
@Test
public void testAll(