使用Java Bean有什么好处?

我相信我理解Java Beans是什么:包含无参数构造函数的Java类是可序列化的,并使用getter和setter公开它们的字段。

  1. Java Bean是否必须公开其所有字段才能获得bean的资格? 如果不是,它甚至不得不暴露任何

  2. May Java Beans包含带参数的构造函数以及无参数构造函数吗?

  3. Java Bean的目的是什么,除了符合某种编码风格? 似乎有很多关于’豆类’或’豆类’的讨论,但我不知道为什么它们是有利的,特别是。

我完全可以制作no-arg构造函数。 可能有很多原因,如果无参数构造函数帮助编译器进行一些优化,我也不会感到惊讶。 我也可以理解让你的类可序列化。 即使该类从未被序列化,也可能是,并且回溯可能会令人讨厌(或者在黑盒子库中不可能)。

但最令人好奇的是要求所有字段都可以通过getter和setter访问。 当我需要它时,我会在我自己的工作中使用它们,但Java Beans需要它们(可能所有这些,取决于我对#1的回答)似乎很奇怪。 如果它是reflection的问题,那么reflection是否也不容易得到字段? 如果这不仅仅是设置值是一个问题,如果方法存在,reflection是否不能在字段上使用getter / setter?

他们遵守明确的规范

多亏了这一点,有很多工具可以轻松地使用Javabeans(或者反之亦然)。 有些工具可以根据某种风格( XML , JSON , CSV , DDL等)中的某些数据自动生成它们,反之亦然,也可以像Commons BeanUtils , Dozer , EZMorph等那样读取/操作/映射它们。 。 此外,还有很多MVC / ORM框架可以与Javabeans一起使用,比如JPA , Hibernate , JSF , Spring等。甚至像Eclipse这样有点像IDE也知道如何基于某些字段自动生成Javabeans。

它是Javabeans周围的工具和框架,使我们的生活更轻松。 Javabeans规范使这些东西存在。

最重要的是,Java Bean是一个可重用的软件组件

这意味着它没有与其他组件紧密耦合。 如果您的Java类创建另一个类的实例,或者返回一些特定的实现类,则它不再是bean。 Bean覆盖了一些明确定义的function,并且与其他类松散耦合。

这样做的好处是,你可以获得所有这些小件,然后你可以很容易地一起工作。 此外,这些易于重复使用和unit testing。

即使您没有使用某些可视化环境来耦合bean(如bean规范所示),这仍然是使用bean的原因:获取易于使用的小块代码。

如果您不使用可视化工具,那么您的bean具有0参数构造函数或可序列化并不重要。

1)豆类与平台无关,这意味着它可以在任何地方运行。

2)它可以在任何语言环境中运行,并在自然界中分发。

3)可以控制豆类的方法,性质和事件。

4)配置Java bean很容易。

5)bean可以接收和创建事件。

6)bean的配置设置可以持久存储,并且可以随时检索。

最大的优点是您的bean是根据规范构建的,可以直接与“bean兼容”库和框架一起使用。

例如,序列化的大多数框架(XML,JSON,YAML,…)通常可以直接使用bean而无需配置。