Resource和Autowired有什么区别
@Resource
和 @Autowired
是两个常用的注解,用于在 Spring 中进行依赖注入。它们的主要区别如下:
来源:
@Resource
是由 JavaEE 提供的注解,而@Autowired
是 Spring 框架提供的注解。注入方式:
@Resource
默认按照名称(byName)进行注入,可以通过name
属性指定注入的 Bean 名称;而@Autowired
默认按照类型(byType)进行注入,会自动寻找匹配的 Bean。需要引入的包:
@Resource
是在javax.annotation
包下,而@Autowired
是在org.springframework.beans.factory.annotation
包下。扩展性:
@Autowired
是 Spring 提供的注解,它支持更多的选项和功能,如通过@Qualifier
指定注入的 Bean,通过@Primary
指定首选的 Bean 等。而@Resource
的功能相对较少,没有类似的扩展选项。兼容性:
@Autowired
是 Spring 的专有注解,因此在使用 Spring 框架时更常用,而@Resource
是 JavaEE 的标准注解,因此在使用 JavaEE 容器(如 JavaEE 服务器)时更常用。不过,Spring 也支持@Resource
注解,所以在 Spring 中可以使用两者。
综上所述,@Autowired
是 Spring 更强大和灵活的依赖注入注解,而 @Resource
是 JavaEE 提供的标准注解,在特定情况下可以使用。在一般情况下,推荐使用 @Autowired
进行依赖注入。