💡 一则也许对你有用的小广告 🏆

欢迎飞飞程序员   ,你将获得:专属的实战项目(已更新的所有会员标识的项目都能学习) / 1v1 提问 / Java 学习路线 / PHP 学习路线 / 学习打卡 / 社群讨论

  • 正在进行中的项目:《FFBlog知识付费博客项目》 正在持续更新中,基于 Spring Boot 3.x + JDK 21...,点击查看 ;
  • 《从零开发:FFBlog知识付费博客项目(全栈开发)》 演示链接: https://ffblog.ffcxy.com/  ;

截止目前, 飞飞  正在疯狂爆肝实战项目,后续还会上新更多项目,目标是将所学知识开发成项目并且分享给大家,如知识付费系统, Ai系统, CMS系统,在线商城系统,等等 ,欢迎点击围观

在 Spring Boot(以及 Spring 框架)中,Bean 是一个核心概念,理解它对于掌握 Spring 开发至关重要。

什么是 Bean?

Bean 是由 Spring 容器(IoC 容器)管理的 Java 对象,它具有以下特点:

  1. 由 Spring 容器创建和管理 - 不是由开发者直接 new 出来的对象
  2. 生命周期由容器控制 - Spring 负责 bean 的创建、初始化和销毁
  3. 可被依赖注入 - 其他 bean 可以通过依赖注入使用它
  4. 通常是单例的 - 默认情况下,每个 bean 在容器中只有一个实例

Bean 的常见类型

  1. 应用组件

    • @Controller - 处理 HTTP 请求
    • @Service - 业务逻辑层
    • @Repository - 数据访问层
    • @Component - 通用组件
  2. 配置类

    • @Configuration 类中带有 @Bean 注解的方法返回的对象
  3. 第三方库集成

    • DataSourceJdbcTemplate 等由 Spring Boot 自动配置的 bean

如何定义 Bean?

1. 使用注解(最常见的方式)

@Service
public class UserService {
    // 业务逻辑
}

@Repository
public class UserRepository {
    // 数据访问代码
}

2. 使用 @Bean 方法(在配置类中)

@Configuration
public class AppConfig {
    
    @Bean
    public MyBean myBean() {
        return new MyBean();
    }
}

Bean 的生命周期

Spring 管理的 bean 有完整的生命周期:

  1. 实例化 - 容器创建 bean 实例
  2. 属性赋值 - 注入依赖(通过 @Autowired 等)
  3. 初始化 - 调用 @PostConstruct 方法或实现 InitializingBean 接口
  4. 使用 - bean 处于就绪状态,可被应用使用
  5. 销毁 - 调用 @PreDestroy 方法或实现 DisposableBean 接口

Bean 的作用域

Spring Bean 有几种作用域(通过 @Scope 指定):

  1. singleton(默认) - 每个容器一个实例
  2. prototype - 每次请求都创建新实例
  3. request - 每个 HTTP 请求一个实例(Web)
  4. session - 每个 HTTP 会话一个实例(Web)
  5. application - 整个 Web 应用生命周期一个实例

为什么需要 Bean?

  1. 控制反转(IoC) - 将对象的创建和管理权交给容器
  2. 依赖注入(DI) - 自动解决对象间的依赖关系
  3. 方便管理 - 统一的生命周期管理
  4. 易于测试 - 可以轻松替换实现(如 Mock)
  5. 促进松耦合 - 通过接口而非具体实现编程

实际示例

@Service
public class OrderService {
    
    @Autowired
    private PaymentService paymentService;  // 注入另一个bean
    
    public void processOrder(Order order) {
        paymentService.processPayment(order);
    }
}

在这个例子中:

  • OrderServicePaymentService 都是 Spring bean
  • @Autowired 实现了依赖注入
  • Spring 容器管理它们的生命周期和依赖关系

理解 bean 的概念是掌握 Spring Boot 开发的基础,它代表了 Spring 的核心思想——控制反转和依赖注入。

上一篇 Spring Boot框架中Import和@Autowired的区别和使用场景
下一篇 SpringBoot框架Lombok库中常用的注解详解和用法

全部评论(0)

头像
😃 😁 😅 😂 😍 😜 😝 🤑 🥵 🥰 😙 😎 😵 😭 😱 😖 🥳 👽 🙈 🤡 😤 💣 💯 💢 ❤️ 👍 👏 👋 👌 🤏 🙏
还没有任何评论哟~