学静思语
Published on 2025-03-15 / 16 Visits
0
0

Spring依赖注入注解处理器

Spring依赖注入注解处理器

Spring框架提供了多种依赖注入的方式,其中常用的注解包括@Resource@Autowired。这些注解分别由不同的处理器完成解析和注入工作。

@Resource注解处理器

  • 处理器名称CommonAnnotationBeanPostProcessor
  • 来源@Resource是JSR-250规范定义的标准Java注解
  • 工作原理
  • 识别bean中带有@Resource注解的字段或方法
  • 优先根据注解中指定的name属性查找匹配的Bean
  • 如果未指定name,则使用字段名或方法参数名作为Bean名称查找
  • 如果按名称未找到,则回退到按类型查找
  • 将找到的依赖对象注入到对应的字段或方法中

@Autowired注解处理器

  • 处理器名称AutowiredAnnotationBeanPostProcessor
  • 来源@Autowired是Spring框架自定义的注解
  • 工作原理
  • 识别带有@Autowired注解的字段、方法和构造函数
  • 优先按类型查找匹配的依赖对象
  • 如果找到多个类型匹配的Bean,则使用@Qualifier注解或按名称进行筛选
  • 根据required属性决定是否允许依赖为空
  • 将找到的依赖对象注入到对应的字段、方法或构造函数中
  • 同时还负责处理@Value注解,用于注入配置属性值

两种注解的主要区别

| 特性 | @Resource | @Autowired |
|——|———–|————|
| 规范来源 | Java标准JSR-250 | Spring框架自定义 |
| 默认匹配策略 | 按名称 | 按类型 |
| 处理器 | CommonAnnotationBeanPostProcessor | AutowiredAnnotationBeanPostProcessor |
| 配合注解 | 无需其他注解配合 | 可配合@Qualifier细化注入 |
| 适用范围 | 字段、方法 | 字段、方法、构造函数、参数 |


Comment