首页 文章

使用Java Bean有什么好处?

提问于
浏览
23

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

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

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

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

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

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

6 回答

  • 1

    我认为bean的最大优点是可以以单个对象的形式传递数据(或多或少) . 在方法的定义中不需要创建很多参数,而是可以使用bean代替并直接以对象的形式传递数据 . 它提供了更好的程序架构......这就是我的想法

  • 5

    JavaBean本身并不十分有趣,它只是一个符合上面列出的标准的Java类 . 但是,符合此标准是Java EE框架构建的支柱之一,它出现在很多地方 . 我怀疑当你听说JavaBeans可以做的所有伟大事情时,Enterprise JavaBeans(EJB)中提到了什么 . 仅供参考,下面列出了几种不同类型的EJB:

    • 实体 beans

    • 有状态会话 beans

    • 无状态会话 beans

    现在有一些细节......

    Entity Beans

    您可能希望从底层数据库读取/写入对象 . 您可以使用JDBC / SQL来执行此操作,但您也可以使用持久性框架 . Java EE规范包含一个持久性规范,您可以将该类声明为“实体bean”,并让Java自动生成数据库表和逻辑,以便在数据库中的条目和程序中的对象之间进行映射 . 最初,持久性需要使用Application Server(例如Glassfish,JBoss,Geronimo等),但AFAIK,您可以在没有服务器组件的桌面应用程序中使用它 . 实际的实现由较低级别的库提供,例如Eclipselink,Toplink,Hibernate等,但Java API抽象出它们之间的任何差异 .

    Stateful Session Beans

    想象一下,您想要创建一个存在于单独JVM上的Java类实例 . JVM可能在同一台物理计算机上运行,但同样可能在通过网络进行通信的不同计算机上运行 . 使用Java EE应用程序服务器,您可以创建一个可以由应用程序服务器的客户端实例化的类 . 这些客户端可以实例化一个类似于普通对象的类,但是在对象上调用的任何方法都会在服务器上执行,并将结果传递回调用者 . 它基本上是一种面向对象的远程过程调用形式 .

    Stateless Session Beans

    这是有状态会话bean的一个小变化 . 对于有状态bean,如果服务器有1000个客户端,那么它可能必须创建1000个bean实例并记住哪个实例属于哪个客户端 . 对于无状态bean,服务器创建一个bean池,并且不记得哪个客户端拥有哪个bean . 当客户端调用方法时,服务器从池中选择一个bean并使用它,在完成时将其返回到池中 . 当您希望服务器记住有关每个客户端的详细信息时,您将使用有状态会话bean,当您不知道客户端不感兴趣此状态时,您将使用无状态Bean .

  • 0

    他们坚持清楚 specification .

    多亏了这一点,有很多工具可以简化Javabeans的工作(或者反之亦然) . 有些工具可以根据某种风格(XMLJSONCSVDDL等)的数据自动生成它们和/或副反之亦然,也可以像Commons BeanUtilsDozerEZMorph等那样读/操作/映射它们 . 此外,还有很多与Javabeans一起使用的MVC / ORM框架,如JPAHibernateJSFSpring等 . 即使像Eclipse这样有点像IDE的人也知道如何基于某些字段自动生成Javabeans .

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

  • 2

    最重要的是,Java Bean是 reusable software component .

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

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

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

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

  • 0

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

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

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

    4)配置Java bean很容易 .

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

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

  • 13

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

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

相关问题