- 构造器注入:通过调用类的构造函数来提供所需要的依赖项
- 接口注入:依赖项通过特定接口的方式注入依赖,更强调依赖注入的契约化和松耦合
- Setter注入:通过调用类的Setter()方法来提供所需要的依赖项
- 注解注入:通过@Autowired、@Resource等注解标记所需要注入的依赖项,然后由Spring容器来注入依赖,相较于其他注入方式更灵活
扩展:@Autowired和@Resource有什么区别
来源方面:
- @Autowired来源于Spring框架,是Spring自带的注解 org.springframework.beans.factory.annotation.Autowired
- @Resource是输入java的标准注解。javax.annotation.Resource
依赖查找策略方面:
- @Autowired:通过byType(类型)匹配Bean。如果有多个相同类型的Bean会抛出NoUniqueBeanDefinitionException。存在多个相同类型的Bean时需要
@Qualifier
来指定Bean名称 - @Resource:默认按照名字(byName)匹配Bean。若未指定
name
,则使用字段名或 Setter 方法参数名