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 Bean | Spring 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”强调的是类本身的编写结构。
187

被折叠的 条评论
为什么被折叠?



