2008.04.11 Thinking in java 笔记, 一个纯的java bean的规则.以下只是个人的总结,有不对的地方还请大家指出.
现在很多的框架语言的配置大都采用java bean类了,包括WebWork,Struts2,Spring,JSF等.那么一个java bean应该有什么样的特点呢.
1. 有一个public,没有参数,的构造方法.
- public 是因为这个类要被其它的类来调用(多数由框架中的对象工厂来创建一个新的对象),所以这个类必须能被任何其它的类访问,也就只能是public的.
- 没有参数是因为对象工厂来创建这个bean对象时通常是像下面这样的过程创建的:
Class c
=
null
;
Object obj
=
null
;
try
...
{
c = Class.forName(className);
obj = c.newInstance();
}
catch
(ClassNotFoundException e)
...
{
logger.error("error happened when find class :" + className,e);
}
catch
(InstantiationException e)
...
{
logger.error("error happened when create newInstance :" + className,e);
}
catch
(IllegalAccessException e)
...
{
logger.error("error happened when create newInstance :" + className,e);
}
- className就是.xml配置文件中的<bean-class-name>属性,必须是java类的全名称(包含package的名称),这个方法(newInstance())调用的是没有参数的bean的构造方法,对于某些框架(例如Spring)中的创建bean时可以有参数,是调用的
Constructor.newInstance,这里就不讨论了,个人认为一个纯的java bean对象的构造方法应该是没有参数的,所有的属性(Properties)都应该在对象创建以后通过get,set 方法来进行赋值.
2. 属性(Properties)的命名应该符合java的命名规范,即首个单词的字母应该小写.有相应的set,get方法
每个属性应该是private方法的,这样对属性的操作只能通过其set,get方法(这句话应该不绝对,因为Hibernate的对象与表结构的对应配置时,说即使是private的属性没有public的set 方法也是可以对其赋值的,确切是怎样实现的,还没研究过
).,每个属性有其public 的set,get方法,这样才能使得bean 中的属性可以进行读写操作,创建set,get方法时要注意,属性的名称在set,get方法中的第一个字母要大写的,还有就是属性的名称与set,get后的字段要完全匹配,像这样,
String methodName
=
"
get
"
+
propertyName.substring(
0
,
1
).toUpperCase()
+
propertyName.substring(
1
);
改变属性的名称后,其相应的set,get方法也要修改,不然会使得类中有值,但是在页面上却显示不出来,对于使用Eclipse做为开发工具的朋友来说,可以用"Source"中的"Generate getter and setters" 命令.有了相应的set,get方法,其它类就可以通过Method中的invoke()方法来对bean的属性进行操作了
本文详细介绍了JavaBean的规范,强调了公共无参构造方法的重要性及其原因,并解释了属性命名规则及get、set方法的设计原则。
2305

被折叠的 条评论
为什么被折叠?



