前言

Spring Bean (不是Java Bean) 讲透,你以后看 Spring 源码会顺很多。


一、Bean 到底是什么?

一句话:

👉 Bean = 被 Spring 容器管理的对象


举个最简单例子

@Component
public class OrderService {
}

这个类在 Spring 里就变成了一个:

Bean

二、Bean 和普通对象有什么区别?

对比一下你就明白了:

普通对象 Bean
你自己 new Spring 创建
生命周期你控制 Spring 控制
依赖手动传 自动注入
不可被 AOP 增强 可被代理增强

👉 本质区别:

Bean = “被Spring托管”的对象

三、Bean 是怎么来的?

有三种最常见方式:


① @Component(自动扫描)

@Component
class A {}

② @Bean(手动声明)

@Configuration
class Config {

    @Bean
    public A a() {
        return new A();
    }
}

③ 自动配置(Spring Boot)

RedisTemplate / DataSource / ObjectMapper

👉 都是自动变成 Bean


四、Bean 在容器里长啥样?

Spring 内部其实是:

Map<String, Object>

类似:

orderService -> OrderService实例
userService  -> UserService实例

五、Bean 的名字怎么来的?

默认:

类名首字母小写
OrderService → orderService

你也可以指定:

@Component("myService")

六、Bean 生命周期(核心🔥)

一个 Bean 从出生到死亡:


1️⃣ 创建(实例化)

new 对象

2️⃣ 属性注入

@Autowired

3️⃣ 初始化

@PostConstruct

4️⃣ 使用中

被调用


5️⃣ 销毁

@PreDestroy

七、为什么必须有 Bean?

如果没有 Bean,你会写:

UserService userService = new UserService();
OrderService orderService = new OrderService(userService);

👉 层层依赖,代码爆炸


有了 Bean:

@Autowired
UserService userService;

👉 Spring帮你全部搞定


八、Bean + AOP(关键点🔥)

只有 Bean 才能被增强:

@Transactional
public void test() {}

👉 因为:

Spring 会给 Bean 创建代理对象

九、BeanDefinition(更底层一点)

刚才你看到的 Bean,其实背后是:

BeanDefinition(定义)

👉 它是:

Bean 的“说明书”

里面包含:

  • 类名
  • 是否单例
  • 依赖关系
  • 初始化方法

👉 流程:

BeanDefinition → Bean实例

十、Bean 作用域(scope)

默认:

singleton(单例)

也可以:

@Scope("prototype")
作用域 含义
singleton 全局唯一
prototype 每次 new
request 每次请求
session 每个会话

十一、你现在可以这样理解(非常重要)

👉 Spring 世界里:

一切皆 Bean

包括:

  • Controller
  • Service
  • Repository
  • DataSource
  • RedisTemplate
  • 甚至 AOP 代理对象

十二、一句话总结(面试用)

👉
Bean 是由 Spring 容器创建和管理的对象,是 IOC 和 DI 的基础载体,负责承载业务逻辑并参与生命周期管理与 AOP 增强。


最后给你一个“顿悟点”

你之前学的:

  • @Component
  • @Autowired
  • @Transactional
  • 自动配置

其实都围绕一件事:

如何创建、管理、增强 Bean

如果你愿意,我可以再带你进入更底层一层:

👉 Bean 是如何“被创建”的(createBean 源码)
👉 Spring 是如何“实例化 + 注入 + 代理”的完整流程
👉 BeanFactory vs ApplicationContext 区别

这一步就已经是“源码级工程师”了 👍

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐