Spring高手之路-Spring Bean、Java Bean和对象的区别与联系

2024-01-03 13:55:47

目录

什么是Spring Bean

什么是Java Bean

什么是对象

Spring Bean与Java Bean与对象的联系与区别

联系

区别


什么是Spring Bean

在Spring官方文档中对Bean的解释如下:

In Spring, the objects that form the backbone of your application and that are managed by the Spring loC container are called beans. A bean
is an object that is instantiated.
assembled. and otherwise managed by a Spring IoC container

译文:

在 Spring 中,构成应用程序主干并由Spring IoC容器管理的对象称为bean,bean是一个由Spring IoC容器实例化、组装和管理的对象。

概念简单明了,我们提取处关键的信息:


1. bean是对象,一个或者多个不限定
2.bean由Spring中一个叫IoC的东西管理

由此可以得出,由Spring(Ioc)管理的对象就称之为Bean。

什么是Java Bean

简单来说符合Java Bean规范的特殊Java类就是Java Bean。Java Bean是一种Java语言规范,它是一种可重用的、可序列化的、具有无参构造函数和符合特定命名约定的Java类。Java Bean的属性通过getter和setter方法进行访问和设置,它可以被用于各种用途,如数据传输、持久化、GUI组件等。

Java Bean 对象通常具有以下特征:

  1. 类必须是具有无参构造函数的公共类。
  2. 私有属性应该使用标准的 getter 和 setter 方法进行访问。
  3. 可选地,可以实现序列化接口以支持对象的持久化和网络传输。
  4. 可选地,可以提供其他方法来实现业务逻辑。

除了 Java Bean,还存在其他类型的对象或组件模型,它们可能不符合 Java Bean 的规范或具有其他特定的设计目的。

  1. 简单的数据传输对象(DTO):DTO 是一种用于封装和传输数据的对象模型,通常与数据库表或远程服务的数据结构直接对应。与 Java Bean 不同,DTO 可能没有标准的 getter 和 setter 方法,并且可能包含来自多个来源的数据字段。

  2. 实体类(Entity Class):实体类用于表示领域模型中的实体或业务对象,通常用于持久化和数据操作。与 Java Bean 不同,实体类可能包含与数据库交互相关的注解、查询方法或业务逻辑。

  3. 值对象(Value Object):值对象是一种不可变对象,其主要目的是封装一组相关的属性值。与 Java Bean 不同,值对象通常没有公共的 setter 方法,并且可能重写了 equals()hashCode() 方法以支持值比较。

什么是对象

对象是面向对象编程中的基本概念,是类的实例。对象具有状态(属性)和行为(方法),可以通过创建类的实例来表示具体的对象,可以相互之间进行交互和通信。那么Java 是实现了面向对象编程规范的一种,Java Bean也就是对对象的实现方式

Spring Bean与Java Bean与对象的联系与区别

联系

Spring Bean可以理解为一个被 Spring 容器所管理的对象(不一定是JavaBean),Spring Bean的本质就是Java中的类,它被Spring容器所管理,称它为Spring Bean。

三者之间的范畴关系如下:

简单来说,对象的范畴最广,Spring Bean、Java Bean同在对象范畴之内,但这两者存在交集,Java Bean可以被Spring管理成为Spring Bean,但不符合Java Bean规范的类(如POJO)也可以被Spring管理成为Spring Bean。

区别

Java Bean是一种符合规范的Java类,而Spring Bean是Spring框架中的一种对象管理机制。

Java Bean通常需要手动创建和配置,而Spring Bean可以由Spring容器自动创建和管理。

Java Bean没有依赖注入的特性,而Spring Bean可以通过依赖注入实现解耦和灵活性。

Java Bean通常是轻量级的,而Spring Bean可以是重量级的,可以具有更复杂的功能和特性。

文章来源:https://blog.csdn.net/qq_62262918/article/details/135360526
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。