JavaBeans vs Spring beans vs POJOs

JavaBean, Spring bean 和 POJO 是三个被广泛使用的术语,本文分别讨论了它们的含义,以及分析三者的区别。

JavaBeans

根本而言,JavaBean只是遵循了特定编码规范的Java类而已。例如:

  1. 包含默认(无参数)的构造函数
  2. 允许通过访问器(getter和setter方法)来访问类的成员属性
  3. 实现java.io.Serializable接口

准确来说,JavaBean是遵循了Sun制定的JavaBean 标准的类,该标准最早于1996年发布。JavaBean被定义为Java的“软件组件模型”。最初的想法是将JavaBean打造成能够被构建工具可视化地操作的可重用的组件,由此,软件供应商可以创建和出售能够让用户灵活地组合进应用程序的JavaBean。JavaBean的三个最重要的特性是:

  1. 它暴露的一系列属性(称之为“特征“attribute)
  2. 它允许其他组件调用的一系列方法
  3. 它触发的一系列事件(用来通知它注册了的监听器)

POJO

POJO是 Plain Old Java Object(简单的Java对象)的缩写。它最初是由Martin Fowler等人创造的,作为一种花式的对普通Java对象的称呼。这类对象不需要通过框架来使用,也不需要在特定应用服务器的环境下才能运行。这个词主要用来区分简单、轻量的Java对象和“重量级“的类,例如EJB。《POJOs in Action》一书介绍了使用这类轻量的对象来进行开发的方法,许多框架-例如Spring-也推广了POJO的使用。

Spring beans

Spring bean 表示受到Spring管理的对象。具体说来,它是被Spring框架容器初始化、配置和管理的对象。Spring bean是在Spring的配置文件中定义(现在也可以通过annotation注解来定义),在Spring容器中初始化,然后注入到应用程序中的。

因为在最早的版本中,Spring是被设计用来管理JavaBean的,所以Spring管理的对象会被称为“bean”。当然,现在Spring已经可以管理任何对象,即使它不具备默认构造器和设置方法(getter和setter)这些JavaBean的特性。然而,”Spring bean“这个术语仍然被保存了下来。

Spring bean可以是POJO吗?当然可以,并且它通常就是。(即使它并不一定得是POJO,例如Spring可以用来处理重量级Java对象,比如EJB对象)。

总结

虽然距离JavaBean规范的发表已经过了十多年,这个规范仍然有重要的作用,并且影响着现代框架–如Spring–的开发。然而,虽然我们仍然可以称这些包含默认构造器和私有字段的访问方法的类为JavaBean,它的“可以被构建工具可视化地管理的可重用组件”的概念已经不再流行了。

而另一方面,POJO已经无处不在了,人们对EJB的复杂性的积怨使得“轻量的”Java编程获得了广泛采用。

Spring bean是由Spring框架创建和管理的对象。

这三个概念并不是互斥的。一个Java对象可以同时是JavaBean,POJO和Spring bean。

原文链接: Shaunabram 翻译: ImportNew.com - tmqdaniel
译文链接: http://www.importnew.com/14019.html
[ 转载请保留原文出处、译者和译文链接。]



相关文章

发表评论

Comment form

(*) 表示必填项

还没有评论。

跳到底部
返回顶部