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

news2024/11/18 6:03:42

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1352176.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL数据库高级SQL语句及存储过程

目录 一、高级SQL语句 (一)case语句 1.语法定义 2.示例 (二)空值(NULL) 和 无值( ) 1.区别 2.示例 (1)字符长度 (2)判断方法 ① 空值(NULL) ② 无值( ) (3…

代码随想录算法训练DAY18|二叉树5

算法训练DAY18|二叉树5 513.找树左下角的值 力扣题目链接 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: 思路 本题要找出树的最后一行的最左边的值。此时大家应该想起用层序遍历是非常简单的了,反而用递归的话会比较难一点。 我…

【通关喜报】腾讯云TDSQL TCP/TCE、云运维tcp 12月认证考试,全员过关,年终冲刺!

2023年12月23日云贝教育有6位学员参加了腾讯云TDSQL-TCP以及TCE认证考试。都取得非常好的成绩~下面我们来看一下各位同学的理论考试和上机考试成绩吧~

BWP频域位置的确定

这里根据协议整理下BWP频域相关参数以及如何确定BWP的频域位置。 BWP的配置包含几个参数 : 1 SCS, CyclePrefix 和locationAndBandwidth。 BWP频域起始位置N_start_BWPOcarrierRBstart,其中Ocarrier 由RRC层参数offsetToCarrier决定。 locationAndB…

Java学习——设计模式——结构型模式2

结构型模式 结构型模式主要涉及如何组合各种对象以便获得更好、更灵活的结构。虽然面向对象的继承机制提供了最基本的子类扩展父类的功能,但结构型模式不仅仅简单地使用继承,而更多地通过组合与运行期的动态组合来实现更灵活的功能。 包括: 1…

Redis命令---String篇 (超全)

目录 1.Redis Setnx 命令 - 只有在 key 不存在时设置 key 的值。简介语法可用版本: > 1.0.0返回值: 设置成功,返回 1 。 设置失败,返回 0 。 示例 2.Redis Getrange 命令 - 返回 key 中字符串值的子字符简介语法可用版本: > 2.4.0返回值: 截取得到…

vue3 接入 Element Plus

vue3 接入 Element Plus vue3 发布已经很久了,官方也已经发布公告,自2023年12月31日起停止对 vue2 版本的维护更新,因此,vue3 正式登上了历史的舞台。组件库一直是前端开发的利器,减少了开发者开发复杂度,提…

计算机毕业设计------基于SpringCloud的实验室管理系统

项目介绍 实验室管理系统的用户可以分为两种:系统管理员和普通用户。系统管理员主要功能: 登录登出、分析数据、管理用户、管理日志、管理实验室、管理预约、维护个人资料、实验室保修管理 用户主要功能: 注册登录、查询实验室、实验室预约…

Edge浏览器的卸载(一分钟版)

一分钟看完不耽误 开整工具下载后 结尾 开整 工具 Remove-MS-Edge 看名字,简单直接 CSDN下载 资源设置是免费的,大家尽管下载 不放心软件安全的话,自己上github地址下载也行 下载后 解压之后 我们打开有gui的,也就是有界面的&…

胡润研究院发布《2023胡润中国最具历史文化底蕴品牌榜》

胡润研究院发布《2023胡润中国最具历史文化底蕴品牌榜》,前十名分别是片仔癀、同仁堂、贵州茅台、五粮液、中国银行、中华、黄山、农业银行、建设银行、汾酒。 榜单调研范围涵盖中国内地具有60年以上历史的为消费者提供产品或服务的品牌,综合考察品牌历史…

polar CTF web upload tutu

一、题目 二、解题 1、上传两个一样的木马提示不是 setu(色图) 2、上传两个图,提示md5值不一样 综上他需要两张md5值相同的图 找工具 fastcoll 可生成两个md5值相同的文件 http://www.win.tue.nl/hashclash/fastcoll_v1.0.0.5.exe.zip 照…

编织Spring魔法:解读核心容器中的Beans机制【beans 一】

欢迎来到我的博客,代码的世界里,每一行都是一个故事 编织Spring魔法:解读核心容器中的Beans机制【beans 一】 前言什么是Spring核心容器Beans的生命周期管理:初始化和销毁方法:各种作用域: beans的配置方式…

【Bidomain建模范式:Pansharpening】

Bidomain Modeling Paradigm for Pansharpening (泛锐化的Bidomain建模范式) 泛锐化是一个具有挑战性的低层次视觉任务,其目的是学习光谱信息和空间细节之间的互补表示。尽管取得了显着的进步,现有的基于深度神经网络&#xff0…

JVM内存模型理解

1、首先理解下什么是 jvm 内存模型? jvm内存模型定义了Java虚拟机运行时如何组织和管理内存,规定了各个内存区域的作用、结构和交互方式,以及线程间的内存可见性、内存操作的原子性等行为,以支持Java程序的执行,即一种…

以角色为基础的软件开发团队建设

角色抽象作为一种载体,可以很好地进行软件工程知识体系和企业知识地图的组织,满足企业知识体系持续改进的需要,因此角色团队组建和建设也可以作为软件工程实施方法之一。 软件开发项目立项时,重要工作之一就是开发团队的组建&…

Spring Security 6.x 系列(13)—— 会话管理及源码分析(一)

一、会话概念 在实现会话管理之前,我们还是先来了解一下协议和会话的概念,连协议和会话都不知道是啥,还谈啥管理。 1.1 http 协议 因为我们现在的会话,基本上都是基于HTTP协议的,所以在讲解会话之前,我再…

openmediavault(OMV) (26)网络(1)ddns-go

简介 "ddns-go" 是一个动态域名解析(Dynamic DNS)工具,用于更新域名的IP地址。它可以自动检测你的公共IP地址,并将其更新到指定的域名解析服务商,以确保你的域名始终与最新的IP地址相匹配。 安装 hub.docker.com上下载ddns-go镜像 配置compose文件 --- versio…

使用 Process Explorer 和 Windbg 排查软件线程堵塞案例分享

目录 1、问题说明 2、线程堵塞的可能原因分析 3、使用Windbg和Process Explorer确定线程中发生了死循环 4、根据Windbg中显示的函数调用堆栈去查看源码,找到问题 4.1、在Windbg定位发生死循环的函数的方法 4.2、在Windbg中查看变量的值去辅助分析 4.3、是循环…

ModStartCMS v7.9.0 内容推荐支持,用户授权升级

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市…

CMake入门教程【基础篇】HelloCMake

文章目录 概述核心实现代码示例使用技巧注意事项 总结 概述 CMake是一个强大的跨平台构建系统,广泛用于C和C项目。它使用简单的配置文件来生成标准的构建文件,从而使得构建过程跨平台且易于管理。本教程将通过一个“Hello World”示例(命名为…