在 Spring 框架中,依赖注入(Dependency Injection,简称 DI)是实现松耦合、提升代码可维护性的核心概念之一。@Autowired
和 @Resource
是 Spring 提供的两种注解,主要用于实现自动装配(自动注入),它们的使用场景与配置方式非常接近,但在一些细节上存在差异。本文将深入分析这两个注解的定义、使用方法、区别,以及原理和高级用法,帮助开发者在实际开发中做出合理的选择。
一、基本定义
1. @Autowired
注解
@Autowired
是 Spring 提供的核心注解之一,用于自动装配 Bean。在使用该注解时,Spring 会根据类型(默认行为)来自动匹配并注入 Bean。
- 自动装配:
@Autowired
注解可以标注在类的字段、构造方法或 setter 方法上,Spring 容器会通过类型匹配进行注入。 - 默认按类型装配:Spring 默认通过 Bean 的类型来匹配注入的对象,如果存在多个符合条件的 Bean,则会抛出异常。