Spring Boot 是一个用于简化 Spring 应用初始搭建以及开发过程的框架,它大量使用了注解来简化配置和提高开发效率。以下是一些常见的 Spring Boot 注解及其底层实现:
### 1. `@SpringBootApplication`
这是一个复合注解,包含了 `@Configuration`、`@EnableAutoConfiguration` 和 `@ComponentScan`。
- **`@Configuration`**:标记一个类为配置类,通常用于定义 Bean。
- **`@EnableAutoConfiguration`**:启用 Spring Boot 的自动配置机制。
- **`@ComponentScan`**:启用组件扫描,自动检测并注册 Bean。
### 2. `@RestController`
这是一个组合注解,包含了 `@Controller` 和 `@ResponseBody`。
- **`@Controller`**:标记一个类为控制器,用于处理 HTTP 请求。
- **`@ResponseBody`**:指示方法返回值应直接写入 HTTP 响应体中,而不是进行视图解析。
### 3. `@RequestMapping`
用于映射 Web 请求到控制器方法。
- **底层实现**:通过 `HandlerMapping` 和 `HandlerAdapter` 实现请求的路由和处理。
### 4. `@Autowired`
用于自动装配 Bean。
- **底层实现**:通过 `AutowiredAnnotationBeanPostProcessor` 实现依赖注入。
### 5. `@Qualifier`
与 `@Autowired` 一起使用,用于指定具体的 Bean。
- **底层实现**:在依赖注入时,通过名称或类型匹配具体的 Bean。
### 6. `@Value`
用于注入配置文件中的属性值。
- **底层实现**:通过 `PropertySourcesPlaceholderConfigurer` 解析占位符并注入属性值。
### 7. `@Component`
标记一个类为 Spring 组件,使其可以被自动检测并注册为 Bean。
- **底层实现**:通过 `ClassPathBeanDefinitionScanner` 扫描并注册 Bean 定义。
### 8. `@Service`
标记一个类为服务层组件。
- **底层实现**:与 `@Component` 类似,通过组件扫描注册为 Bean。
### 9. `@Repository`
标记一个类为数据访问层组件。
- **底层实现**:与 `@Component` 类似,通过组件扫描注册为 Bean。
### 10. `@ConfigurationProperties`
用于将配置文件中的属性绑定到 Java 对象。
- **底层实现**:通过 `ConfigurationPropertiesBindingPostProcessor` 实现属性绑定。
### 11. `@EnableConfigurationProperties`
启用 `@ConfigurationProperties` 注解的类的自动配置。
- **底层实现**:通过 `ConfigurationPropertiesBeanRegistrar` 注册配置属性 Bean。
### 12. `@Conditional`
用于条件化地注册 Bean。
- **底层实现**:通过 `ConditionEvaluator` 评估条件并决定是否注册 Bean。
### 13. `@Profile`
用于根据激活的配置文件条件化地注册 Bean。
- **底层实现**:通过 `ProfileCondition` 评估当前激活的配置文件。
### 14. `@Transactional`
用于声明事务管理。
- **底层实现**:通过 `TransactionInterceptor` 和 `TransactionAttributeSource` 实现事务管理。
### 15. `@Async`
用于声明异步方法。
- **底层实现**:通过 `AsyncAnnotationBeanPostProcessor` 和 `TaskExecutor` 实现异步执行。