当前位置: 首页 > 面试题库 >

使用Java Bean的好处是什么?

罗奇文
2023-03-14
问题内容

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

  1. Java Bean是否必须公开其 所有 字段才能成为Bean?如果没有,它甚至有揭露 任何

  2. Java Bean可以包括带有参数的构造函数以及无参数的构造函数吗?

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

我完全可以制作no-
arg构造函数。可能有很多原因,如果没有参数的构造函数可以帮助编译器进行一些优化,我也不会感到惊讶。我也可以理解使您的课程可序列化。即使该类从未进行序列化,也
可能 是这样,并且追溯回去做可能会很烦人(或者在黑盒库中是不可能的)。

但是最奇怪的是要求所有字段都可以通过getter和setter进行访问。当我需要它们时,我确实在他们自己的工作中使用它们,但是Java
Bean需要它们(可能是全部,这取决于我对#1的回答)似乎很奇怪。如果是反射问题,反射是否同样容易获得字段?如果除了简单地设置值之外,还有其他问题,如果该方法存在,反射是否不能在字段上使用getter
/ setter方法?


问题答案:

单独使用JavaBean并不是很有趣,它只是一个符合上面列出的某些标准的Java类。但是,遵循此标准是Java
EE框架所基于的支柱之一,并且在很多地方都已出现。我怀疑当您听到JavaBeans可以完成的所有伟大工作时,Enterprise
JavaBeans(EJB)中所指的是什么。仅供参考,下面列出了几种不同类型的EJB:

  1. 实体豆
  2. 有状态会话Bean
  3. 无状态会话Bean

现在有一些细节…

实体豆

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

有状态会话Bean

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

无状态会话Bean

这是有状态会话Bean的一个小变体。对于有状态Bean,如果服务器具有1000个客户端,则它可能必须创建1000个Bean实例并记住哪个实例属于哪个客户端。使用无状态Bean,服务器将创建一个Bean池,并且不必费心记住哪个客户端
拥有 哪个Bean。当客户端调用方法时,服务器从池中选择一个bean并使用它,并在完成时将其返回到池中。当您希望服务器 记住
有关每个客户端的详细信息时,可以使用有状态会话Bean;而在不需要记住客户端特定的详细信息时,可以使用无状态Bean。请注意,无状态Bean可能具有状态,只是该状态对客户端不感兴趣。



 类似资料:
  • 问题内容: 我尝试阅读一些文章,但对这个主题不太清楚。 有人想向我解释以下几点: 为什么通过HTTP使用websocket 什么是全双工通信 延迟延迟交互是什么意思 问题答案: 为什么通过HTTP使用websocket? webSocket是客户端和服务器之间的连续连接。该连续连接允许以下操作: 数据可以随时从服务器发送到客户端,而客户端甚至不需要请求。这通常称为服务器推送,对于客户端需要在服务器

  • 问题内容: 我认为,“ Bean”是具有属性和getter / setter的Java类。据我了解,它等效于C结构。真的吗? 另外,bean和常规类之间是否存在真正的语法差异?有没有特殊定义或接口? 基本上,为什么有一个术语呢? 还什么的接口是什么意思? 问题答案: JavaBean只是一个标准 所有私有属性(使用getters / setters) 一个公开的无参数构造函数 实施Serializ

  • 问题内容: 使用FAST_FORWARD定义游标的好处是什么?它对性能更好吗?为什么? 问题答案: MSDN的定义是: 指定 启用了性能优化 的FORWARD_ONLY,READ_ONLY游标。如果还指定了SCROLL或FOR_UPDATE,则不能指定FAST_FORWARD。FAST_FORWARD和FORWARD_ONLY是互斥的;如果指定了一个,则不能指定另一个。 我加粗了关键点。它可以支持

  • 基本上,为什么有这个术语? 还有,接口是什么意思?

  • 问题内容: 我在sql server 2012中有一个sql表,需要重命名。我知道在其他数据库系统中执行此操作的方法如下: 但是,似乎SQL Server需要不同的语法。从SQL Management Studio中,我在“设计视图”中重命名了该表,然后右键单击以生成“生成更改脚本”,它产生了以下内容: 使用sp_rename是重命名的最佳实践吗? 另外,它还生成了另一行来设置lock_escla

  • 在Kubernetes文档中,它提到使用的缓存语义使得ImagePullPolicy非常高效。我想选择不同的ImagePullPolicy的原因是什么?