理解 Spring 中的 Bean:Spring 应用的支柱
发布: (2025年12月29日 GMT+8 22:31)
3 min read
原文: Dev.to
Source: Dev.to
什么是 Spring Bean?
Spring Bean 是一个 由 Spring IoC(控制反转)容器创建、配置并管理的对象。通俗地说:
- Spring 为你创建对象
- Spring 管理它们的依赖
- Spring 控制它们的生命周期
Bean 构成了 Spring 应用的核心构件,整个应用本质上是相互连接的 Bean 集合。
Spring 中如何定义 Bean?
使用立体注解(Stereotype Annotations)
常用的立体注解:
@Component– 通用组件@Service– 业务逻辑层@Repository– 数据访问层@Controller– Web 控制层
这些注解告诉 Spring:“这个类应该由 IoC 容器管理。”
使用配置类显式声明 Bean
- 类上使用
@Configuration注解。 - 类内部的方法以编程方式定义 Bean,例如:
@Configuration
public class AppConfig {
@Bean
public MyService myService() {
return new MyServiceImpl();
}
}
这种方式在需要自定义创建和配置 Bean 时提供了更大的控制权。
Spring Bean 生命周期
Bean 生命周期阶段
- Bean 已创建 – 实例化对象。
- 依赖注入 – 注入依赖。
- Bean 已初始化 – 调用任何初始化回调。
- Bean 被使用 – Bean 已准备好供应用使用。
- Bean 已销毁 – 在移除前执行销毁回调。
Bean 生命周期钩子
@PostConstruct– 在依赖注入完成后调用的方法。@PreDestroy– 在 Bean 从容器中移除前调用的方法。
Spring Bean 的作用域
常见 Bean 作用域
singleton(默认) – 每个 Spring 容器只有一个共享实例。prototype– 每次请求 Bean 时都会创建一个新实例。request– 每个 HTTP 请求对应一个实例(Web 环境)。websocket– 每个 WebSocket 会话对应一个实例。
了解作用域很重要,因为它直接影响内存使用、性能以及应用行为。
为什么 Bean 很重要
- 依赖注入 – 促进松耦合。
- 清晰的架构 – 明确分离关注点。
- 可测试且易维护 – Bean 可以在测试中轻松模拟或替换。
一旦 Bean 的概念清晰,理解其他 Spring 特性就会变得容易得多。