Java Bean 的历史

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: Java Bean 规范定义在 JavaBeans Specification 中。该规范是 Sun Microsystems(现在是 Oracle Corporation)在 1996 年发布的,用于定义 Java Bean 的特性、命名约定和组成方式,以便于 Java 开发人员编写可重用的、可扩展的和可组合的组件。

Java Bean 规范定义在 JavaBeans Specification 中。该规范是 Sun Microsystems(现在是 Oracle Corporation)在 1996 年发布的,用于定义 Java Bean 的特性、命名约定和组成方式,以便于 Java 开发人员编写可重用的、可扩展的和可组合的组件。该规范主要包括以下内容:

  • 类型约定:Java Bean 类必须是公共的、序列化的,并且有默认的无参构造方法。
  • 属性约定:Java Bean 类中的属性(Property)必须通过 getter 和 setter 方法来访问和修改。
  • 事件约定:Java Bean 类必须支持事件处理机制,即可以向外部发布事件,也可以监听外部事件。
  • 持久化约定:Java Bean 类必须支持持久化(Persistence),即可以将 Bean 的状态保存到外部存储介质中,也可以从外部存储介质中加载 Bean 的状态。
  • 自省(Introspection)约定:Java Bean 类必须支持自省,即可以通过反射机制来获取 Bean 的属性和事件信息。

Java Bean 规范的目的是为了提高 Java 组件的可重用性和可组合性,使得 Java 开发人员可以更加方便地创建和使用组件。

Java Bean 出现之前

在 Java Bean 出现之前,通常使用的是简单的数据结构来存储数据,例如数组、结构体等。这种方式存在一些问题,例如:

  • 数据结构不够灵活,只能存储固定类型的数据,不能存储多种类型的数据。
  • 数据结构没有封装性,数据的访问权限不够严格,容易发生数据的不一致性。
  • 缺乏与其他组件的交互能力,需要手动编写大量的代码来完成数据的传递和转换。
public class Person {
    private String[] info = new String[2];
    
    public Person() {}
    
    public Person(String name, int age) {
        info[0] = name;
        info[1] = String.valueOf(age);
    }
    
    public String getName() {
        return info[0];
    }
    
    public void setName(String name) {
        info[0] = name;
    }
    
    public int getAge() {
        return Integer.parseInt(info[1]);
    }
    
    public void setAge(int age) {
        info[1] = String.valueOf(age);
    }
}

在上面的代码中,Person 类使用了一个长度为 2 的字符串数组来存储人的姓名和年龄。它提供了一个默认构造方法和一个带参数的构造方法,以及四个访问方法。

Java Bean 的出现之后

解决了上述问题,它将数据封装在一个对象中,并提供了一系列的访问方法和事件机制,使得数据的访问和操作更加灵活和安全。Java Bean 还可以通过实现 Serializable 接口来支持对象的序列化和反序列化,从而实现数据的持久化和网络传输。

下面是 Java Bean 的一个简单示例:

public class Person {
    private String name;
    private int age;
    
    public Person() {}
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getAge() {
        return age;
    }
    
    public void setAge(int age) {
        this.age = age;
    }
}

完整例子

以下是一个简单的 Java Bean 类的示例代码,用于演示 Java Bean 规范中的 5 个特性:

import java.io.Serializable;
import java.util.EventListener;

// Java Bean 类必须是公共的、序列化的,并且有默认的无参构造方法
public class UserBean implements Serializable {
    private String name; // Java Bean 类中的属性必须通过 getter 和 setter 方法来访问和修改
    private int age;
    private boolean married;

    public UserBean() {
        super();
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isMarried() {
        return married;
    }

    public void setMarried(boolean married) {
        this.married = married;
    }

    // Java Bean 类必须支持事件处理机制,即可以向外部发布事件,也可以监听外部事件
    public void addEventListener(EventListener listener) {
        // 添加事件监听器的代码
    }

    public void removeEventListener(EventListener listener) {
        // 移除事件监听器的代码
    }

    // Java Bean 类必须支持持久化(Persistence),即可以将 Bean 的状态保存到外部存储介质中,也可以从外部存储介质中加载 Bean 的状态
    public void saveToDatabase() {
        // 将 Bean 的状态保存到数据库中的代码
    }

    public void loadFromDatabase() {
        // 从数据库中加载 Bean 的状态的代码
    }

    // Java Bean 类必须支持自省,即可以通过反射机制来获取 Bean 的属性和事件信息
    public PropertyDescriptor[] getPropertyDescriptors() {
        // 获取 Java Bean 的属性信息的代码
    }

    public EventSetDescriptor[] getEventSetDescriptors() {
        // 获取 Java Bean 的事件信息的代码
    }
}

Java Bean 与面向对象

使用面向对象的编程思想来设计类和对象是 Java Bean 的核心思想之一。Java Bean 定义了一些规范,例如提供默认构造方法、属性使用私有的 get/set 方法以及实现可序列化接口等,这些规范可以使得 Java Bean 更加灵活、可复用和易于维护。因此,Java Bean 与面向对象的编程思想密切相关,两者之间存在着很多相似的地方。

目录
相关文章
|
6月前
|
搜索推荐 Java 开发者
org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
【5月更文挑战第14天】org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException 问题处理
555 1
|
3月前
|
Java Spring 容器
Java SpringBoot 中,动态执行 bean 对象中的方法
Java SpringBoot 中,动态执行 bean 对象中的方法
40 0
|
3月前
|
Java Spring
Java SpringBoot Bean InitializingBean 项目初始化
Java SpringBoot Bean InitializingBean 项目初始化
54 0
|
4月前
|
存储 前端开发 Java
Java中的不同Bean作用域
【7月更文挑战第5天】
56 0
Java中的不同Bean作用域
|
5月前
|
Java 持续交付 Maven
Java报错:Missing ServletWebServerFactory bean,如何解决
Java开发中遇到`Missing ServletWebServerFactory bean`错误?该问题可能由依赖冲突、配置问题或环境不一致引起。解决方法包括:检查依赖版本一致性、修复配置错误、确保环境匹配,以及查看IDE中的JRE配置。预防这类问题,可采用版本管理工具、CI/CD流程、代码审查和社区学习。木头左提醒,记得点赞和分享,下次见!
Java报错:Missing ServletWebServerFactory bean,如何解决
|
5月前
|
Java API 数据处理
Java Bean参数验证:深入探索javax.validation.constraints注解
Java Bean参数验证:深入探索javax.validation.constraints注解
199 0
|
6月前
|
消息中间件 安全 Java
在Spring Bean中,如何通过Java配置类定义Bean?
【4月更文挑战第30天】在Spring Bean中,如何通过Java配置类定义Bean?
98 1
|
6月前
|
Java 测试技术 Spring
|
Java Spring
【Java】Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean
【Java】Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean
175 0
|
前端开发 Java 数据处理
每日一道面试题之介绍一下Java Bean并谈谈它的命名规范~
每日一道面试题之介绍一下Java Bean并谈谈它的命名规范~
202 0

热门文章

最新文章