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

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

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

Serializable接口是什么意思?


当前回答

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

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

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

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

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

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

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

其他回答

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

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

举例说明。

1.导入java.io.Serializable

关于序列化,请参阅文档。

2.私人领域

字段应该是私有的,以防止外部类轻易修改这些字段。通常使用getter/setter方法,而不是直接访问这些字段。

3.施工人员

没有任何参数的公共构造函数。

4.吸气器/设置器

用于访问和修改私有字段的Getter和setter方法。

/** 1. import java.io.Serializable */
public class User implements java.io.Serializable {
    /** 2. private fields */
    private int id;
    private String name;

    /** 3. Constructor */
    public User() {
    }
    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    /** 4. getter/setter */
    // getter
    public int getId() {
        return id;
    }
    public String getName() {
        return name;
    }
    // setter
    public void setId(int id) {
        this.id = id;
    }
    public void setName(String name) {
        this.name = name;
    }
}

根据维基百科:

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

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

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

现实世界中Beans的典型用法:

简单可重用对象POJO(纯旧Java对象)可视对象Spring使用Beans处理对象(例如,需要在会话中序列化的User对象)EJB(Enterprise Java Beans),更复杂的对象,如JSF Beans(JSF是过时的技术)或JSP Beans

因此,实际上,Bean只是一种约定/标准,它期望Java对象具有某种行为(序列化),并以某种方式对其进行更改(财产的setter)。

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

JavaBean的财产

JavaBean是满足某些编程约定的Java对象:

JavaBean类必须实现Serializable或可外部化JavaBean类必须具有无参数构造函数所有JavaBean财产都必须具有公共setter和getter方法所有JavaBean实例变量都应该是私有的

JavaBeans示例

@Entity
public class Employee implements Serializable{

   @Id
   private int id;
   private String name;   
   private int salary;  

   public Employee() {}

   public Employee(String name, int salary) {
      this.name = name;
      this.salary = salary;
   }
   public int getId() {
      return id;
   }
   public void setId( int id ) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName( String name ) {
      this.name = name;
   }
   public int getSalary() {
      return salary;
   }
   public void setSalary( int salary ) {
      this.salary = salary;
   }
}