Spring 基础概念
1. JavaBean
JavaBean 是一种组件技术 ,就好像你做了一个扳子,而这个扳子会在很多地方被拿去用,这个扳子也提供多种功能(你可以拿这个扳子扳、锤、撬等等),而这个扳子就是一个组件。
JavaBean 是一个遵循特定写法的 Java 类 ,它通常具有如下特点:
- 这个 Java 类必须具有一个无参的构造函数
- 属性必须私有化。
- 私有化的属性必须通过 public 类型的方法暴露给其它程序,并且方法的命名也必须遵守一定的命名规范。
- 这个类应是可序列化的。(比如可以实现 Serializable 接口,用于实现 bean 的持久性)
许多开发者把 JavaBean 看作遵从特定命名约定的 POJO。 简而言之,当一个 POJO 可序列化,有一个无参的构造函数,使用 getter 和 setter 方法来访问属性时,他就是一个 JavaBean。
package gacl.javabean.study;
/**
* @author gacl
* Person 类就是一个最简单的 JavaBean
*/
public class Person {
//Person 类封装的私有属性
// 姓名 String 类型
private String name;
// 性别 String 类型
private String sex;
// 年龄 int 类型
private int age;
/**
* 无参数构造方法
*/
public Person() {
}
//Person 类对外提供的用于访问私有属性的 public 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
JavaBean 在 J2EE 开发中,通常用于封装数据,对于遵循以上写法的 JavaBean 组件,其它程序可以通过反射技术实例化 JavaBean 对象,并且通过反射那些遵守命名规范的方法,从而获知 JavaBean 的属性,进而调用其属性保存数据。
2. Bean
- Bean 的中文含义是“豆子”,Bean 的含义是可重复使用的 Java 组件 。所谓组件就是一个由可以自行进行内部管理的一个或几个类所组成、外界不了解其内部信息和运行方式的群体。使用它的对象只能通过接口来操作。
- Bean 并不需要继承特别的基类(BaseClass) 或实现特定的接口(Interface)。Bean 的编写规范使 Bean 的容器(Container) 能够分析一个 Java 类文件,并将其方法(Methods) 翻译成属性(Properties),即把 Java 类作为一个 Bean 类使用。Bean 的编写规范包括 Bean 类的构造方法、定义属性和访问方法编写规则。
- Java Bean 是基于 Java 的组件模型,由 属性、方法和事件 3 部分组成。在该模型中,JavaBean 可以被修改或与其他组件结合以生成新组件或完整的程序。它是一种 Java 类,通过封装成为具有某种功能或者处理某个业务的对象。因此,也可以通过嵌在 JSP 页面内的 Java 代码访问 Bean 及其属性。
3. 传统 Javabean 与 Spring 中的 bean 的区别
Javabean 已经没人用了
springbean 可以说是 javabean 的发展,但已经完全不是一回事儿了
- 用处不同: 传统 javabean 更多地作为值传递参数,而 spring 中的 bean 用处几乎无处不在,任何组件都可以被称为 bean。
- 写法不同: 传统 javabean 作为值对象,要求每个属性都提供 getter 和 setter 方法;但 spring 中的 bean 只需为接受设值注入的属性提供 setter 方法。
- 生命周期不同: 传统 javabean 作为值对象传递,不接受任何容器管理其生命周期;spring 中的 bean 有 spring 管理其生命周期行为。
所有可以被 spring 容器实例化并管理的 java 类都可以称为 bean。
原来服务器处理页面返回的值都是直接使用 request 对象,后来增加了 javabean 来管理对象,所有页面值只要是和 javabean 对应,就可以用类.GET 属性方法来获取值。javabean 不只可以传参数,也可以处理数据,相当与把一个服务器执行的类放到了页面上,使对象管理相对不那么乱(对比 asp 的时候所有内容都在页面上完成)。
spring 中的 bean,是通过配置文件、javaconfig 等的设置,有 spring 自动实例化,用完后自动销毁的对象。让我们只需要在用的时候使用对象就可以,不用考虑如果创建类对象(这就是 spring 的注入)。一般是用在服务器端代码的执行上。
4. POJO
POJO 和 JavaBean 是我们常见的两个关键字,一般容易混淆,POJO 全称是 Plain Ordinary Java Object / Pure Old Java Object,中文可以翻译成:普通 Java 类, 具有一部分 getter/setter 方法的那种类就可以称作 POJO ,但是 JavaBean 则比 POJO 复杂很多, Java Bean 是可复用的组件,对 Java Bean 并没有严格的规范,理论上讲,任何一个 Java 类都可以是一个 Bean 。但通常情况下,由于 Java Bean 是被容器所创建(如 Tomcat) 的,所以 Java Bean 应具有一个无参的构造器,另外,通常 Java Bean 还要实现 Serializable 接口用于实现 Bean 的持久性。 Java Bean 是不能被跨进程访问的
一般在 web 应用程序中建立一个数据库的映射对象时,我们只能称它为 POJO。
POJO(Plain Old Java Object) 这个名字用来强调它是一个普通 java 对象,而不是一个特殊的对象。
2005 年 11 月时,“POJO”主要用来指代那些没用遵从特定的 Java 对象模型,约定或框架如 EJB 的 Java 对象。
理想地讲,一个 POJO 是一个不受任何限制的 Java 对象(除了 Java 语言规范)。例如一个 POJO 不应该是
- 扩展预定的类,如
public class Foo extends javax.servlet.http.HttpServlet { ...
- 实现预定的接口,如
public class Bar implements javax.ejb.EntityBean { ...
- 包含预定的标注,如
@javax.ejb.Entity public class Baz{ ...
然后,因为技术上的困难及其他原因,许多兼容 POJO 风格的软件产品或框架事实上仍然要求使用预定的标注,譬如用于更方便的持久化。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

上一篇: 深入浅出 IOC
下一篇: Spring 核心技术
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论