Java, Java Bean 和 Spring Bean 的区别

本贴最后更新于 1628 天前,其中的信息可能已经时过境迁

Java 是一名面向对象的编程语言, Java Object 是对象在 Java 中的表示形式, Java Class 则是 Java 语言用来描述对象元信息的特殊对象 (Class 类是描述对象元信息的特殊类).

Bean

Bean 是一类特殊的对象, 比如具有属性, 事件等特定的特征, 它是脱离于编程语言的规范.

Java Bean

C# 语言的类原生很强大, 本身就支持 Bean 规范.

public class Bean {

	private String _value = "";

	public Bean() {

	}

	public string Value {
		get {
			return _value;
		}
		set {
			_value = value;
		}
	}
}

Java 语言在这方面还有欠缺, 因为 Java Class 只有字段 (Field) 和方法 (Method, 构造器也算) 两种成员, 为了表示 Bean 的 属性, Java 必须利用字段和方法两个成员组合实现 (俗称 "胶水代码"):

public class Bean implements Serializable {

	private String value = "";

	public Bean() {

	}

	public String getValue() {
		return value;
	}

	public void setValue(String value) {
		this.value = value;
	}
}

Bean 的规范并不是固定的, 比如早期 Bean 中的事件是为了 GUI 开发而制定的. 一般来说, Bean 有 POJO 和 EJB 两种规范. 由于 EJB (充血模型) 太重了, 所有就有了更加简洁的 POJO (贫血模型). 现在一般所讲的 Java Bean 都是 POJO, 所有回答 Java Bean 是什么, 回答 POJO 的定义就算对.

POJO 定义:

  1. 拥有无参构造
  2. 支持序列化
  3. 属性私有, 通过公开的 setter 或 getter 访问.

下面的一段话是个人理解, 非权威:

制定 Bean 规范的目的就是为了更好的描述对象 (抽象), 一个对象在程序运行时的表示不应当只是贫血模型, 它应当具有更多的特征或行为. Java Bean 可以用来实现可复用的组件, 但并不是说 Java Bean 就是可复用的组件.

Spring Bean

Spring Bean 对 Bean 做了一个对业务代码无侵入的实现方案, 引入了 BeanDefinition .开发者不需要再强制依赖 EJB 的接口, 不需要再对无用接口进行空实现.

Spring Bean 并不强制 Bean 必须拥有哪些特征, 你可以通过 BeanDefinition 来定制 Bean 的特征, Bean 可以是最简单的 POJO, 也可以具有完整的状态, 行为, 事件, 事务, 生命周期等.

Spring Bean 也并不强制 Spring Bean 就是 业务代码, 你可以通过字节码操作动态的生成一个类, 比如动态代理. Java 类和 Spring Bean 是隔离开的, 你写的 Java 类只是用来一种创建 Bean 的方式, 使用这个类创建的对象则是 Spring Bean 在 JVM 中的表现形式. Spring Bean 是编程语言无关的.

SpringBean.png

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    944 引用 • 1459 回帖 • 17 关注
  • 非权威
    1 引用

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...