feat:更新博客

This commit is contained in:
2025-11-29 21:49:12 +08:00
parent bda2256ea7
commit aa0603efff
15 changed files with 331 additions and 51 deletions

View File

@@ -1,60 +1,60 @@
## 一、Bean概念
### 1.1 定义
# 一、Bean概念
## 1.1 定义
  Spring bean是Spring框架在运行时管理的对象Bean是一个由Spring IoC容器实例化、组装和管理的对象。
  一个 Bean 可以是任何普通的 Java 对象,例如 POJO、Service、Respository、Controller 等等。将一个类声明为 Bean 的方式可以是在类级别上使用 `@Component` 注解或其派生注解(`@Service``@Repository``@Controller`等),也可以是通过配置文件进行显式的声明。
### 1.2 实例化
## 1.2 实例化
  Spring 容器负责实例化 Bean。当应用程序启动时Spring 容器会根据配置信息或注解扫描的结果,找到并实例化所有被标记为 Bean 的类,并将它们加入容器中。实例化的过程由 Spring 的 IoC 容器负责。
### 1.3 管理
## 1.3 管理
  一旦 Bean 被实例化Spring 容器将负责管理 Bean 的生命周期和依赖关系。它会根据配置文件或注解的信息,自动解决 Bean 之间的依赖关系确保在需要的时候正确的注入依赖。Spring 容器还会负责销毁不再需要的 Bean。
### 1.4 依赖注入
## 1.4 依赖注入
  依赖注入是 Spring 框架的一个重要特性,它允许通过自动或显式配置的方式将 Bean 的依赖项注入到其它 Bean 中。依赖注入可以通过构造函数注入、Setter 方法注入或字段注入的方式实现,其中最常见的是使用 `@Autowired`注解进行注入。
### 1.5 作用域
## 1.5 作用域
  Spring 框架提供了多种作用域scope来管理 Bean 的生命周期。常见的作用域包括单例Singleton、原型Prototype、会话Session、请求Request等。默认情况下Bean 是单例的,即每个容器中只存在一个实例。但可以根据需要配置其它作用域。
### 1.6 自动装配
## 1.6 自动装配
  Spring Boot 支持自动装配Auto - wiring它能够根据类型或名称自动解析和注入依赖关系。通过在需要注入的字段、构造函数或 Setter 方法上使用 `@Autowired` 注解Spring 容器会自动查找并注入对应的 Bean。
## 二、Bean生命周期
# 二、Bean生命周期
![暂无图片](https://cxx0822.iepose.cn/rustfs/blog/b30628a6b1fa3cfd250cc5efff612a68.jpg 'Bean生命周期.jpg')
### 2.1 实例化
## 2.1 实例化
  指创建对象的过程,也就是说,当 Spring 容器启动时,它会扫描所有的配置文件,读取 Bean 定义,然后根据定义创建 Bean 对象的实例。这个过程中Spring 容器会使用反射机制来调用 Bean 的构造函数来实例化对象。
### 2.2 属性赋值
## 2.2 属性赋值
  对 Bean 的实例化对象进行属性填充;
### 2.3 初始化
## 2.3 初始化
  指 Bean 对象被创建后Spring 容器会根据配置文件中的定义来对其进行一系列的属性设置、依赖注入等操作使其可以正常运行。这个过程中Spring 容器会调用 Bean 的一些特定方法,如 set 方法、init-method 方法等来完成对象的初始化。
### 2.4 销毁
## 2.4 销毁
  执行一些预定义的销毁方法;
## 三、Bean注解——@Component
### 基本概念
# 三、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 接口开发 |
## 其他衍生注解
| 注解 | 所属层 | 继承关系 | 适用场景 |
|------------|------------|-------------|----------|
| @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通过组件扫描自动注册。<br>无特定语义,是其他组件注解的基础。 | - Bean 生命周期管理<br>- 依赖注入支持 |
| **@Repository** | 标记数据访问组件(如数据库操作类),<br>自动处理数据访问异常。 | - 异常转换<br>- DAO 组件扫描 |
| **@Service** | 标记业务逻辑组件,负责处理业务流程、事务管理等。<br>提供语义化,明确该类在架构中的角色。 | - 与 @Transactional 注解默认集成<br>- IDE 识别为服务层组件 |
| **@Controller** | 标记 Web 控制器,处理 HTTP 请求。<br>与 Spring MVC 框架紧密集成。 | - 请求映射自动注册<br>- 支持 @RequestMapping@GetMapping 等注解<br>- 视图解析(返回视图名称或 JSON |
| **@RestController** | @Controller + @ResponseBody 的组合,专门用于 RESTful API直接返回 JSON/XML 等数据。 | - 所有方法默认返回 JSON/XML无需每个方法添加 @ResponseBody |
| 注解 | 功能描述 | Spring 自动处理特性 |
|------------------|----------------------|-------------------|
| @Component | 标记类为 Spring Bean通过组件扫描自动注册。<br>无特定语义,是其他组件注解的基础。 | - Bean 生命周期管理<br>- 依赖注入支持 |
| @Repository | 标记数据访问组件(如数据库操作类),<br>自动处理数据访问异常。 | - 异常转换<br>- DAO 组件扫描 |
| @Service | 标记业务逻辑组件,负责处理业务流程、事务管理等。<br>提供语义化,明确该类在架构中的角色。 | - 与 @Transactional 注解默认集成<br>- IDE 识别为服务层组件 |
| @Controller | 标记 Web 控制器,处理 HTTP 请求。<br>与 Spring MVC 框架紧密集成。 | - 请求映射自动注册<br>- 支持 @RequestMapping@GetMapping 等注解<br>- 视图解析(返回视图名称或 JSON |
| @RestController | @Controller + @ResponseBody 的组合,专门用于 RESTful API直接返回 JSON/XML 等数据。 | - 所有方法默认返回 JSON/XML无需每个方法添加 @ResponseBody |