java:理解java bean 和 spring bean

0. Bean

bean翻译为豆子,java本身有咖啡的意思,java bean(咖啡豆)则代表java语言中的一种满足java官方规范的类。
它得满足规范颜色是咖啡色,大小是咖啡豆的大小,里面的成分是咖啡豆的成分。

如果颜色是绿色,那就不是java bean,那是绿豆。

1. Java Bean(Java 标准类)

按照java官方规范编写的java类就叫做java bean,也叫java 标准类

具体要满足以下规范:

(1)有一个公共的无参构造函数:这样可以通过反射机制来实例化。

public class User {
    public User() { // 公共无参构造
    }
}

(2)属性必须是私有的:通过private字段来封装数据。

private String name;
private int age;

(3)通过公共的Getter和Setter方法访问属性:遵循严格的命名约定(getXxx, setXxx, 对于布尔值可以是isXxx)。

public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

(4)可序列化:实现java.io.Serializable接口(非绝对必须,但通常是规范的一部分),以便网络传输或持久化存储。

Java Bean的用途:

  • 作为数据传输对象(DTO)在不同层之间传递数据。

  • 在图形化界面(GUI)开发中,用于封装UI组件的状态和行为。

  • 被各种框架(如Spring, Hibernate)利用,通过反射来操作对象。

简单来说,Java Bean就是一个遵守了特定规则的普通Java类。


2. Spring Bean(一个被管理的对象)

核心定义: Spring Bean 是由 Spring IoC(控制反转)容器 实例化、组装和管理的任何对象

关键点:

  • 生命周期由Spring容器管理:你不需要自己用new关键字来创建它,而是由Spring容器负责创建、配置和销毁。

  • 它是应用程序的基石:你的业务逻辑、数据访问、控制器等,几乎所有核心组件都可以成为Spring Bean。

  • 定义方式多样:可以通过XML配置文件、Java注解(如@Component, @Service, @Controller等)或Java配置类(@Configuration + @Bean)来告诉Spring容器如何创建和管理这个Bean。

示例:

// 1. 这个类本身是一个Java Bean(有无参构造、getter/setter)
@Component // 2. 这个注解告诉Spring:“请把我这个类的对象管理起来,变成一个Spring Bean”
public class UserService {
    public void doSomething() {
        System.out.println("UserService is working...");
    }
}

// 在别处使用,由Spring容器“注入”,而不是自己new
@Controller
public class UserController {
    @Autowired // Spring会自动把容器里的UserService Bean放进来
    private UserService userService; // 不需要写:userService = new UserService();
}

核心区别与联系(一张表格搞定)

特性Java BeanSpring Bean
本质一种按规范编写的类或对象(一个类或对象)一个被管理的对象(一个实例,不是类)
范围狭义上指遵循特定规范的类广义上可以是任何对象,它通常也是一个Java Bean
创建者程序员自己(通过new关键字)Spring IoC 容器
目的实现可重用组件,提供标准化的访问方式实现依赖注入(DI)和控制反转(IoC),解耦程序组件
生命周期由JVM的GC管理(普通对象)由Spring容器全权管理(创建、初始化、销毁)
必要条件有无参构造、getter/setter等必须在Spring容器中被定义/声明

关系的形象比喻

你可以这样理解:

  • Java Bean 就像是“面粉”的行业标准:它规定了面粉的纯度、颗粒度等规范。符合这个标准的面粉,可以被称为“标准面粉”。

  • Spring Bean 就像是“一个已经和好、等待被使用的面团”:这个面团是用符合标准的“Java Bean面粉”做的,但它已经被Spring厨房(IoC容器)和好了,并且厨房知道什么时候该把它拿去蒸馒头(注入到其他Bean中),什么时候该扔掉(销毁)。

总结:“Spring Bean”强调的是对象与Spring容器的关系和管理方式,而“Java Bean”强调的是类本身的编写结构。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值