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

目录
相关文章
|
1月前
|
XML 安全 Java
|
10天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
10天前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
16天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
53 6
|
17天前
|
XML Java 数据格式
🌱 深入Spring的心脏:Bean配置的艺术与实践 🌟
本文深入探讨了Spring框架中Bean配置的奥秘,从基本概念到XML配置文件的使用,再到静态工厂方式实例化Bean的详细步骤,通过实际代码示例帮助读者更好地理解和应用Spring的Bean配置。希望对你的Spring开发之旅有所助益。
80 3
|
2月前
|
Java 程序员
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
小米,29岁程序员,分享了一次面试经历,详细解析了Java中&和&&的区别及应用场景,展示了扎实的基础知识和良好的应变能力,最终成功获得Offer。
84 14
|
1月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
25 1
|
1月前
|
安全 Java 开发者
Spring容器中的bean是线程安全的吗?
Spring容器中的bean默认为单例模式,多线程环境下若操作共享成员变量,易引发线程安全问题。Spring未对单例bean做线程安全处理,需开发者自行解决。通常,Spring bean(如Controller、Service、Dao)无状态变化,故多为线程安全。若涉及线程安全问题,可通过编码或设置bean作用域为prototype解决。
34 1
|
2月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
65 8
|
23天前
|
XML 安全 Java
Spring Boot中使用MapStruct进行对象映射
本文介绍如何在Spring Boot项目中使用MapStruct进行对象映射,探讨其性能高效、类型安全及易于集成等优势,并详细说明添加MapStruct依赖的步骤。