Java Bean和Java Class有什么区别?

21

我是JSP和服务器端编程的新手。到目前为止,我一直在使用Servlets和Java类进行工作。我正在使用Java类来根据MVC模型分离我的应用程序。我想知道Java Bean和Java类之间的区别。以及在什么情况下我可以使用Java Bean而不是Java类。有什么有用的解释或有帮助的链接吗?

2个回答

32

Java bean指的是符合一些规范的类:

  • 可通过getter(如果这些属性不是只读的则包括setter)访问的属性
  • 无参公共构造函数
  • 可序列化

JSP EL和标签是围绕这些约定设计的。它们大部分不需要遵循所有这些约定。通过getter获取的属性是这些约定中最重要的。例如,表达式:

${foo.bar.name}

显示 foo bean 的 bar 名称。foo 是一个必须在页面、请求、会话或应用上下文中的 bean。 这个表达式将在该 bean 上调用 getBar(),然后在由 getBar() 返回的对象上调用 getName()


实现可序列化接口是成为Java bean的必要条件吗? - PlainOldProgrammer
2
@Wronski 从最严格的定义来说是的:https://docs.oracle.com/javase/tutorial/javabeans/advanced/persistence.html。但正如我所说,许多框架依赖于对JavaBean约定的尊重,但这并不意味着它们必须全部遵守。例如,如果对象不可序列化,使用JSP EL访问对象属性将不会失败。 - JB Nizet

3

JavaBeans规范将类型为JavaBeans组件定义为“可重用的软件组件”。组件是一个简单的Java Bean类,Java遵循关于方法命名、构造和行为的某些约定。遵守这些约定使得可以使用、重用、替换和连接Java Beans开发工具。这些bean必须是“Serializable”才能保存和恢复该类的实例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接