文章目录
spring-系列前言注入类型总结
前言
了解过spring的读者应该知道,springIOC的两大核心功能:控制反转和依赖注入。本文将从源码的角度分析spring实现依赖注入的实现逻辑,因为spring注入属于Bean的增强功能基于 BeanPostProcessor接口实现,在阅读本文之前请先了解 BeanPostProcessor接口的功能,如有不是很清楚的读者请移步。
注入类型spring为了使用更加便捷,采用了很多种的注入方式,包括:构造函数注入,@Resource注解注入,@Autowired注解注入和 @Value注解赋值,下面分析他们的优缺点。
| 注入类型 | 优缺点 | 应用场景 |
|---|---|---|
| 构造函数 | 实例过程注入,不支持循环依赖 | 一般使用在少量注入,且没有循环依赖的场景 |
| @Resource | 根据Bean的类型和名称注入,注入时间在实例化之后初始化之前, 基于InstantiationAwareBeanPostProcessor接口的postProcessProperties方法实现,默认实现类CommonAnnotationBeanPostProcessor,支持循环依赖 | 可以使用在任何场景 |
| @Autowired | 根据Bean的类型注入,注入时间在实例化之后初始化之前, 基于SmartInstantiationAwareBeanPostProcessor 接口的postProcessProperties方法实现,默认实现类AutowiredAnnotationBeanPostProcessor,支持循环依赖 | 适合使用在只有一个类型Bean的注入场景 |
| @Value | 根据配置文件配置赋值, 基于SmartInstantiationAwareBeanPostProcessor 接口的postProcessProperties方法实现,默认实现类AutowiredAnnotationBeanPostProcessor | 配置文件赋值 |
注入在使用中很简单,了解不同的注入类型的优缺点有利于我们面对不同场景的使用,和异常排除。希望对您有帮助。



