JavaBean 究竟是什么?

2346

我认为“Bean”是一个具有属性和Getter/Setter的Java类。据我所知,它相当于C语言中的结构体。这是真的吗?

此外,JavaBean与普通类之间是否存在真正的语法区别?
是否有特殊的定义或接口?

基本上,为什么会有这个术语?

另外,“Serializable”接口是什么意思?


25
查看Java Beans的使用场景?,Java Beans是遵循特定约定的类。 - Matthew Flaschen
12
为了完整起见,这里提供了一个链接,指向JavaBeans规范。 - informatik01
7
请注意,如果你听到有人使用 POJO 这个术语,他们通常实际上是指 Bean。当你看到 POJO 时,它们几乎总是具有设置器和获取器、可序列化等特性... 实际上,POJO 不需要设置器和获取器、可序列化接口或任何其他东西--它只是一个没有特定要求的普通Java对象。 - Bill K
1
绝对不是一个结构体,但我很高兴你问了这个问题。 - Don Rolling
23个回答

0

实际上,Beans只是方便使用的对象。将它们序列化意味着能够轻松地持久化它们(以易于恢复的形式存储)。

Beans在现实世界中的典型用途:

  • 简单可重用的POJO(普通旧Java对象)
  • 可视化对象
  • Spring使用Beans处理对象(例如,需要在会话中序列化的用户对象)
  • EJB(企业Java Beans),更复杂的对象,如JSF Beans(JSF是相当过时的技术)或JSP Beans

因此,实际上,Beans只是一种期望从Java对象中获得某些行为(序列化)并以某种方式更改它们(属性的setter)的约定/标准。

如何使用它们只是你的发明,但我列举了最常见的情况。


0

0

Java Bean是JavaBeans架构中的一个组件或基本构建块。 JavaBeans架构是一种组件架构,它从组件化方法的可重用性和互操作性中获益。

有效的组件架构应允许程序从软件构建块(在此情况下为Bean)组装,在可能由不同供应商提供,并使架构师/开发人员能够选择组件(Bean),了解其功能,并将其合并到应用程序中。

由于类/对象是像Java这样的面向对象编程语言的基本构建块,因此它们自然会成为JavaBeans架构中Bean的竞争者。

将普通Java类转换为Java bean的过程实际上只是使其成为可重用和互操作的组件。 这将转化为Java类具有以下功能:

控制一个类的属性、事件和方法,使其对另一个应用程序可用。(您可以拥有一个BeanInfo类,仅报告外部应用程序所需的属性、事件和方法。)
持久性(可序列化或外部化 - 这也意味着具有无参构造函数,使用transient来定义字段)
能够注册事件并生成事件(例如,利用绑定和约束属性)
自定义器(通过GUI自定义Bean或提供文档)
要将Java类称为Java Bean,并不一定需要具备上述所有功能。相反,它意味着实现与上下文相关的一部分功能(例如,在某个框架中的Bean可能不需要自定义器,其他Bean可能不需要绑定和约束属性等)。
几乎所有主流的Java框架和库都隐式遵循JavaBeans架构,以便享受上述好处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接