在读文章之前,我想告诉大家三点
1.本文介绍的JavaBean与企业JavaBeans(EJB)没有任何关系。
2.本文介绍JavaBean是结合 标准的JavaBean(现在用的很少)与我们日常web开发所说的JavaBean,二者在集合属性的定义上还是有不同的。
3.只所以介绍一下与客户端开发相关的标准JavaBean,是想为介绍JavaBean的持久化技术做一下铺垫。
JavaBean的定义
sun对JavaBean的定义:在软件开发过程中以重用的软件构件,并且能够在开发工具中进行可视化的本地操作。
可视化操作就是在开发工具中,对JavaBean进行拖拽键入属性,不用再自己写代码。在开发Swing时很常见。
由此可见,JavaBean定义源于客户端Swing,AWT开发
个人理解其实JavaBean就是一个普通的java类对其应用了标准的命名模式。标准的命名模式通常指: 用get/set来定义属性(is/set来定义boolean属性),通常还会有一个无参的构造器。
随着B/S盛行,JavaBean也在web开发中开始用到
在web开发过程中使用JavaBean的最大好处是: 利用其标准的命名模式,可以通过反射可以对JavaBean进行构造,属性赋值,调用方法。比如说Spring的依赖注入,Struts2的params拦截器等等。
JavaBean的属性
对于标准的JavaBean,即对于客户端的开发来说,有四类属性。
1.简单属性: 一个字符串或者基本数据类型,包装器类型
2.索引属性:数组,集合,映射表
3.绑定属性:与Swing事件相关
4.约束属性:用的很少,在此不介绍
对于简单属性,一对get/set方法就可以定义,但对于索引属性,却需要2对get/set方法,比如说数组:
private String[] arrays;
public String[] getArrays() {
return arrays;
}
public void setArrays(String[] arrays) {
this.arrays = arrays;
}
public void setArrays(int i ,String str){
this.arrays[i] = str;
}
public String getArrays(int i){
return this.arrays[i];
}
瞧,这与web开发中定义JavaBean的数组属性完全不一样。在web开发过程中,我们把所有的数据类型,基本数据类型或者引用数据类型都视为简单类型。即一对get/set方法定义。
下图就是一个Web开发中常说的JavaBean的例子
“`
public class Book {
private Integer id;
private String name;
private List<String> authors;
public Book() {
// TODO Auto-generated constructor stub
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getAuthors() {
return authors;
}
public void setAuthors(List<String> authors) {
this.authors = authors;
}
}