JavaBean和Spring bean的区别

60

我对Spring MVC很陌生,对Java中的Java Bean使用也有些了解。
Java Bean 和 Spring Bean 的基本区别是什么?


http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/htmlsingle/#beans-definition - JB Nizet
它们是完全不同的模式。JavaBean: https://dev59.com/F3A75IYBdhLWcg3wbonM - Matt Ball
它们是普通的POJO,其生命周期由容器维护。JavaBeans由Java标准容器(例如JSF Managed Beans、EJBs、CDI beans等)管理,而Spring beans由Spring容器管理。 - Luiggi Mendoza
4个回答

107

JavaBeans:

JavaBeans基本上是遵循特定编码规范的Java类。具体来说,这些类:

  • 具有公共默认(无参数)构造函数
  • 使用存取器(getter和setter)方法访问其属性
  • 实现了java.io.Serializable

Spring Beans:

Spring Bean基本上是由Spring管理的对象。更具体地说,它是一个由Spring Framework容器实例化、配置和管理的对象。 Spring Bean在Spring配置文件中定义(或者最近使用注释),由Spring容器实例化,然后注入到应用程序中。

请注意,Spring Bean不一定总是JavaBean。Spring Bean可能没有实现java.io.Serializable接口,可以在其构造函数中具有参数等。

这是JavaBeans和Spring Beans之间非常基本的区别。

有关详细信息,请参阅上述文本来源 Shaun Abram 的文章JavaBeans vs Spring beans vs POJOs


7

Java Bean是一个类,应遵循以下规则:

1.必须实现Serializable接口。 2.它应该有一个公共无参构造函数。 3.Java Bean中的所有属性都必须是私有的,并且具有公共的getter和setter方法。

Spring Bean是您应用程序的主干对象,由Spring IoC容器管理。


0

Java Bean 和 Spring Bean 之间的关系比差异更大。

要将 Java 类用作 Java Bean,其 setter 和 getter 方法名称需要符合 JavaBean 指南(也称为设计模式)的属性。如果这样的 Java 类可以通过 Spring IoC 容器进行实例化和管理,则它是一个 Spring Bean。为了实现这一点,程序员使用 XML 配置文件或注释或两者混合将该类作为适当范围的 Bean 定义进行连接。程序员可以通过将后者作为字符串名称的 <idref> 元素或通过依赖注入(可以是递归的)将其传递给前者的构造函数参数来从现有的 Spring Bean 创建新的 Spring Bean。

这个答案可以与我的this SO回答一起阅读,以获取更多的背景信息。


0

Spring Bean:

作为 Spring 应用程序的一部分开发的类。其生命周期由 Spring 容器管理,称为 Spring Bean。


1
这个答案在已经存在且被接受的答案之上新增了什么内容? - Davis Herring
5
欢迎来到SO,请确保在发布回答之前至少查看该主题的其他得分较高的答案或已被采纳的答案,然后决定您的答案是否有用,如果是,则可以发布,否则请不要发布。 - mfaisalhyder

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