Files
blog-press/docs/Web/SpringBoot/SpringBoot-Bean.md

6.0 KiB
Raw Permalink Blame History

title, date
title date
SpringBoot Bean简介 2025-11-29

一、Bean概念

1.1 定义

Spring bean是Spring框架在运行时管理的对象Bean是一个由Spring IoC容器实例化、组装和管理的对象。
  一个 Bean 可以是任何普通的 Java 对象,例如 POJO、Service、Respository、Controller 等等。将一个类声明为 Bean 的方式可以是在类级别上使用 @Component 注解或其派生注解(@Service@Repository@Controller等),也可以是通过配置文件进行显式的声明。

1.2 实例化

Spring 容器负责实例化 Bean。当应用程序启动时Spring 容器会根据配置信息或注解扫描的结果,找到并实例化所有被标记为 Bean 的类,并将它们加入容器中。实例化的过程由 Spring 的 IoC 容器负责。

1.3 管理

  一旦 Bean 被实例化Spring 容器将负责管理 Bean 的生命周期和依赖关系。它会根据配置文件或注解的信息,自动解决 Bean 之间的依赖关系确保在需要的时候正确的注入依赖。Spring 容器还会负责销毁不再需要的 Bean。

1.4 依赖注入

  依赖注入是 Spring 框架的一个重要特性,它允许通过自动或显式配置的方式将 Bean 的依赖项注入到其它 Bean 中。依赖注入可以通过构造函数注入、Setter 方法注入或字段注入的方式实现,其中最常见的是使用 @Autowired注解进行注入。

1.5 作用域

Spring 框架提供了多种作用域scope来管理 Bean 的生命周期。常见的作用域包括单例Singleton、原型Prototype、会话Session、请求Request等。默认情况下Bean 是单例的,即每个容器中只存在一个实例。但可以根据需要配置其它作用域。

1.6 自动装配

Spring Boot 支持自动装配Auto - wiring它能够根据类型或名称自动解析和注入依赖关系。通过在需要注入的字段、构造函数或 Setter 方法上使用 @Autowired 注解Spring 容器会自动查找并注入对应的 Bean。

二、Bean生命周期

暂无图片

2.1 实例化

  指创建对象的过程,也就是说,当 Spring 容器启动时,它会扫描所有的配置文件,读取 Bean 定义,然后根据定义创建 Bean 对象的实例。这个过程中Spring 容器会使用反射机制来调用 Bean 的构造函数来实例化对象。

2.2 属性赋值

  对 Bean 的实例化对象进行属性填充;

2.3 初始化

  指 Bean 对象被创建后Spring 容器会根据配置文件中的定义来对其进行一系列的属性设置、依赖注入等操作使其可以正常运行。这个过程中Spring 容器会调用 Bean 的一些特定方法,如 set 方法、init-method 方法等来完成对象的初始化。

2.4 销毁

  执行一些预定义的销毁方法;

三、Bean注解——@Component

基本概念

@Component 是 Spring 框架中的一个注解,用于将类标记为 Spring 管理的组件。当一个类被 @Component 注解修饰时Spring 会在启动时自动扫描并将该类实例化为 Bean放入应用程序的上下文ApplicationContext以便在其他地方可以通过依赖注入使用。

主要作用

  1. 组件扫描Spring 通过组件扫描机制自动发现并注册被 @Component 注解的类。
  2. Bean 定义:被注解的类会被视为 Spring Bean由 Spring 容器管理其生命周期。
  3. 依赖注入:其他组件可以通过注解(如 @Autowired注入这些 Bean。

其他衍生注解

注解 所属层 继承关系 适用场景
@Component 通用组件 基础注解 不适合特定层的组件(如工具类、配置类)
@Repository 数据访问层 (DAO) 继承 @Component 数据库操作类、ORM 映射类(如 JPA Repository
@Service 服务层 (Service) 继承 @Component 业务逻辑处理(如订单处理、用户认证)
@Controller 控制层 (MVC/Web) 继承 @Component 处理 HTTP 请求的控制器(如 REST API、Web 页面控制器)
@RestController 控制层 (REST API) 继承 @Controller RESTful API 接口开发
注解 功能描述 Spring 自动处理特性
@Component 标记类为 Spring Bean通过组件扫描自动注册。
无特定语义,是其他组件注解的基础。
- Bean 生命周期管理
- 依赖注入支持
@Repository 标记数据访问组件(如数据库操作类),
自动处理数据访问异常。
- 异常转换
- DAO 组件扫描
@Service 标记业务逻辑组件,负责处理业务流程、事务管理等。
提供语义化,明确该类在架构中的角色。
- 与 @Transactional 注解默认集成
- IDE 识别为服务层组件
@Controller 标记 Web 控制器,处理 HTTP 请求。
与 Spring MVC 框架紧密集成。
- 请求映射自动注册
- 支持 @RequestMapping、@GetMapping 等注解
- 视图解析(返回视图名称或 JSON
@RestController @Controller + @ResponseBody 的组合,专门用于 RESTful API直接返回 JSON/XML 等数据。 - 所有方法默认返回 JSON/XML无需每个方法添加 @ResponseBody