我认为,我理解“Bean”是一个具有财产和getters/setter的Java-class。据我所知,它相当于C结构。这是真的吗?

此外,JavaBean和常规类之间是否存在真正的语法差异?是否有特殊定义或接口?

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

Serializable接口是什么意思?


当前回答

JavaBean是满足以下三个条件的任何Java类:

它应该实现可序列化接口(Marker接口)。构造函数应该是公共的,并且没有参数(其他人称之为“无参数构造函数”)。它应该有getter和setter。

值得注意的是,serialVersionUID字段对于维护对象状态非常重要。

以下代码符合bean的资格:

public class DataDog implements java.io.Serializable {

private static final long serialVersionUID = -3774654564564563L;

private int id;
private String nameOfDog;

// The constructor should NOT have arguments
public DataDog () {}


/** 4. getter/setter */

// Getter(s)
public int getId() {
    return id;
}

public String getNameOfDog() {
    return nameOfDog;
}


// Setter(s)
public void setId(int id) {
    this.id = id;
}

public void setNameOfDog(String nameOfDog) {
    this.nameOfDog = nameOfDog;
}}

其他回答

根据维基百科:

类必须具有公共默认构造函数(没有参数)。这允许在编辑和激活框架内轻松实例化。根据标准命名约定,类财产必须可以使用get、set、is(可以用于布尔财产而不是get)和其他方法(所谓的访问器方法和赋值器方法)进行访问。这允许在框架内轻松地自动检查和更新bean状态,其中许多框架包括各种类型财产的自定义编辑器。setter可以有一个或多个参数。该类应该是可序列化的。(这允许应用程序和框架以独立于VM和平台的方式可靠地保存、存储和恢复bean的状态。)

有关详细信息,请单击此链接。

它们是可序列化的,具有零参数构造函数,并允许使用getter和setter方法访问财产。命名“Bean”是为了包含这个标准,它旨在为Java创建可重用的软件组件。根据维基百科。

构成应用程序主干并由SpringIoC容器管理的对象称为bean。bean是由Spring IoC容器实例化、组装和管理的对象。否则,bean只是应用程序中许多对象中的一个。根据Spring IoC。

如果您熟悉C/Golang,您从未听说过Cbean或Gobean,因为它们有struct关键字,开发人员可以轻松定义结构类型,而无需编写复杂的OOP关键字。

type User struct {
  Name string
  Age int
}

var user User

user.Name = "name"
user.Age = 18

var bytes, err = json.Marshal(user)

缺少结构类型是Java的错误,开发人员发现了这种严重的不足。

然后,JavaBean被发明为另一个无聊的规则,让类假装结构,让你的编辑器或编译器不会因为你对类成员的不安全访问而哭泣或大叫。

JavaBean是JavaBeans体系结构中的一个组件或基本构建块。JavaBeans体系结构是一种组件体系结构,它受益于基于组件的方法的可重用性和互操作性。

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

因为类/对象是像Java这样的OOP语言的基本构建块,所以它们是JavaBeans体系结构中Bean的自然竞争者。

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

控制向其他应用程序公开的类的财产、事件和方法。(您可以有一个BeanInfo类,它只报告外部应用程序需要的那些财产、事件和方法。)持久性(可串行化或可外部化-这也意味着没有参数构造函数,对字段使用瞬态)注册事件和生成事件的能力(例如,使用绑定和约束财产)定制器(通过GUI或提供文档来定制Bean)

为了将Java类称为Javabean,它们不需要具备上述所有能力。相反,它意味着实现上述与上下文相关的子集(例如,某个框架中的bean可能不需要自定义程序,其他一些bean可能并不需要绑定和约束的财产,等等)

为了获得上述好处,Java中几乎所有领先的框架和库都隐式地遵循JavaBeans体系结构。

如果您想了解JavaBeans,首先必须了解软件组件。

软件组件

软件组件是运行特定操作的应用程序的一部分。软件组件也可以是服务的一部分。

一个组件是:

已耦合(具有依赖项)Statefull(保存实例变量的状态)不是标准化的,它是为特定的用例而设计的(JavaEEBeans之间的主要区别)在客户端计算机中运行

Java Beans(企业bean)

在Java EE服务器中运行的标准组件包括完成特定服务的不同业务逻辑简化复杂多层分布式系统的开发

JavaBeans更多的是管理大系统的概念。这就是为什么他们需要标准化。

来源