JavaBean
JavaBean 既不是 Applet,也不是 Application,从本质上来说,JavaBean 就是一组用于构建可重用组件的 Java 类库。与其他任何 Java 类一样,JavaBean 也是由属性和方法组成的。
JavaBean 的属性都具有 private
特性,方法具有 public
特性,方法是 JavaBean 的对外接口。
规范:
-
必须有
domain
包,编程规范/良好的编程习惯。 -
必须是具体的和公共的,访问权限最大化,非抽象的。
-
必须有公有无参构造,方便框架或底层通过反射创建对象。
-
必须有相应公有的setter、getter方法,方便设置和获取属性/el表达式。
-
建议对象属性私有化,控制直接操作对象属性。
-
建议对象属性使用包装类,控制直接操作对象属性。
一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter
方法是 get/set
接上首字母大写的属性名。例如:属性名为userName
,其对应的 getter/setter 方法是 getUserName/setUserName
。
但是,还有一些特殊情况:
-
如果属性名的第二个字母大写,那么该属性名直接用作
getter/setter
方法中get/set
的后部分,就是说大小写不变。例如属性名为uName
,方法是getuName/setuName
。 -
如果前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作
getter/setter
方法中get/set
的后部分。例如属性名为URL,方法是getURL/setURL
。 -
如果首字母大写,也是属性名直接用作
getter/setter
方法中get/set
的后部分。例如属性名为Name
,方法是getName/setName
,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name
。
属性名/类型 | getter 方法 |
setter 方法 |
---|---|---|
xcoordinate /Double |
public Double getXcoordinate() |
public void setXcoordinate(Double newValue) |
xCoordinate /Double |
public Double getxCoordinate() |
public void setxCoordinate(Double newValue) |
XCoordinate /Double |
public Double getXCoordinate() |
public void setXCoordinate(Double newValue) |
Xcoordinate /Double |
不允许 | 不允许 |
注:类中的属性为对象属性(字段),getter
和setter
⽅法上的属性为Bean属性(JavaBean属性),其中getter
⽅法上的属性称之为可读属性,setter
⽅法上⾯的属性称之为可写属性。
调用逻辑:
获得Bean属性时,会根据需要找的Bean属性名寻找对应类中是否有Getter/Setter方法,如果有,则通过Getter/Setter方法读/写值。至于读写的值是否是对象属性,取决于Getter/Setter方法是怎么写的。
BeanUtils
需要的jar包:
commons-beanutils-1.9.2.jar
commons-logging-1.2.jar
commons-collections-3.1.jar
常用方法:
-
copyProperties(Object dest, Object orig)
用法一:同⼀个类之间的属性拷⻉
Student stu1 = new Student(); Student stu2 = new Student(); // 将stu1的Bean属性复制给stu2 BeanUtils.copyProperties(stu2, stu1);
用法二:不同类之间属性拷⻉
Student stu = new Student(); Teacher tea = new Teacher(); // 将tea与stu相同的Bean属性复制给stu BeanUtils.copyProperties(stu, tea);
用法三:把Map⾥⾯的元素拷⻉到对象中去(但是不能把对象的元素拷⻉到
map)
Student stu = new Student(); Map m = new HashMap(); m.put("name","Alex"); m.put("age","30"); // 将map BeanUtils.copyProperties(stu, m);