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可以是重量级的,可以具有更复杂的功能和特性。

目录
相关文章
|
8天前
|
XML Java 数据格式
spring复习02,xml配置管理bean
详细讲解了Spring框架中基于XML配置文件管理bean的各种方式,包括获取bean、依赖注入、特殊值处理、属性赋值、集合类型处理、p命名空间、bean作用域及生命周期和自动装配。
spring复习02,xml配置管理bean
|
10天前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
13 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
11天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
25 10
|
11天前
|
人工智能 开发框架 Java
重磅发布!AI 驱动的 Java 开发框架:Spring AI Alibaba
随着生成式 AI 的快速发展,基于 AI 开发框架构建 AI 应用的诉求迅速增长,涌现出了包括 LangChain、LlamaIndex 等开发框架,但大部分框架只提供了 Python 语言的实现。但这些开发框架对于国内习惯了 Spring 开发范式的 Java 开发者而言,并非十分友好和丝滑。因此,我们基于 Spring AI 发布并快速演进 Spring AI Alibaba,通过提供一种方便的 API 抽象,帮助 Java 开发者简化 AI 应用的开发。同时,提供了完整的开源配套,包括可观测、网关、消息队列、配置中心等。
554 6
|
8天前
|
XML Java 数据格式
spring复习03,注解配置管理bean
Spring框架中使用注解配置管理bean的方法,包括常用注解的标识组件、扫描组件、基于注解的自动装配以及使用注解后的注意事项,并提供了一个基于注解自动装配的完整示例。
spring复习03,注解配置管理bean
|
14天前
|
存储 Java 开发者
Java编程中的对象序列化与反序列化
【9月更文挑战第20天】在本文中,我们将探索Java编程中的一个核心概念——对象序列化与反序列化。通过简单易懂的语言和直观的代码示例,你将学会如何将对象状态保存为字节流,以及如何从字节流恢复对象状态。这不仅有助于理解Java中的I/O机制,还能提升你的数据持久化能力。准备好让你的Java技能更上一层楼了吗?让我们开始吧!
|
16天前
|
Java
Java实现:将带时区的时间字符串转换为LocalDateTime对象
通过上述方法,你可以将带时区的时间字符串准确地转换为 `LocalDateTime`对象,这对于处理不需要时区信息的日期和时间场景非常有用。
206 4
|
16天前
|
SQL Java 关系型数据库
在Java中,创建数据源对象
在Java中,创建数据源对象
28 1
|
23天前
|
存储 Java
Java的对象和类的相同之处和不同之处
在 Java 中,对象和类是面向对象编程的核心。
|
28天前
|
Java
Java 对象和类
在Java中,**类**(Class)和**对象**(Object)是面向对象编程的基础。类是创建对象的模板,定义了属性和方法;对象是类的实例,通过`new`关键字创建,具有类定义的属性和行为。例如,`Animal`类定义了`name`和`age`属性及`eat()`、`sleep()`方法;通过`new Animal()`创建的`myAnimal`对象即可调用这些方法。面向对象编程通过类和对象模拟现实世界的实体及其关系,实现问题的结构化解决。
下一篇
无影云桌面