Resource和Autowired有什么区别

@Resource@Autowired 是两个常用的注解,用于在 Spring 中进行依赖注入。它们的主要区别如下:

  1. 来源:@Resource 是由 JavaEE 提供的注解,而 @Autowired 是 Spring 框架提供的注解。

  2. 注入方式:@Resource 默认按照名称(byName)进行注入,可以通过 name 属性指定注入的 Bean 名称;而 @Autowired 默认按照类型(byType)进行注入,会自动寻找匹配的 Bean。

  3. 需要引入的包:@Resource 是在 javax.annotation 包下,而 @Autowired 是在 org.springframework.beans.factory.annotation 包下。

  4. 扩展性:@Autowired 是 Spring 提供的注解,它支持更多的选项和功能,如通过 @Qualifier 指定注入的 Bean,通过 @Primary 指定首选的 Bean 等。而 @Resource 的功能相对较少,没有类似的扩展选项。

  5. 兼容性:@Autowired 是 Spring 的专有注解,因此在使用 Spring 框架时更常用,而 @Resource 是 JavaEE 的标准注解,因此在使用 JavaEE 容器(如 JavaEE 服务器)时更常用。不过,Spring 也支持 @Resource 注解,所以在 Spring 中可以使用两者。

综上所述,@Autowired 是 Spring 更强大和灵活的依赖注入注解,而 @Resource 是 JavaEE 提供的标准注解,在特定情况下可以使用。在一般情况下,推荐使用 @Autowired 进行依赖注入。