目录
@Autowired
-
来源:
@Autowired
是 Spring 框架提供的注解。 -
自动注入:
@Autowired
默认按照类型自动注入 bean。Spring 会通过类型查找匹配的 bean。如果找到多个匹配的 bean,则可以通过@Qualifier
注解指定具体的 bean。 -
使用方式:可以用于字段、构造方法或 setter 方法。
-
默认行为:如果没有找到匹配的 bean,
@Autowired
默认会抛出异常。可以通过设置required=false
来使注入成为可选。 -
配置:
@Autowired
也可以与 Java 配置类或 XML 配置文件一起使用。@Autowired private SomeService someService;
@Resource
-
来源:
@Resource
是 JSR-250 规范提供的注解,也由 Spring 支持。 -
自动注入:
@Resource
默认按名称自动注入 bean。它首先会尝试按照字段名称查找 bean,如果找不到,则按类型查找。 -
使用方式:通常用于字段。也可以与 setter 方法一起使用,但它的常见用法是注解在字段上。
-
默认行为:如果没有找到匹配的 bean,会抛出异常(默认行为)。它没有
required
属性,但你可以通过设置name
属性来明确指定 bean 的名称。 -
配置:
@Resource
主要用于 Java EE 环境的注入,但在 Spring 环境中也常用。@Resource(name="someService") private SomeService someService;
主要区别
-
注入策略:
@Autowired
按类型注入,@Resource
按名称注入(默认情况下)。 -
默认行为:
@Autowired
可以配置为非必需注入(required=false
),@Resource
没有这样的配置选项。 -
来源:
@Autowired
是 Spring 专有的,@Resource
是 JSR-250 规范的一部分。
在实际使用中,选择哪一个注解取决于具体的需求和项目中的约定。