@Autowired和@Resource区别
@Autowired
和@Resource
都是Spring中常用的注入依赖的方式。它们的区别有以下几点:
-
使用的注解不同:
@Autowired
是Spring自带的注解,而@Resource
是JSR-250规范中定义的注解。 -
装配顺序不同:
@Autowired
默认按照类型注入,如果有多个类型匹配,那么还需按照名称进行匹配。而@Resource
默认按照名称进行注入,如果找不到与名称匹配的bean,则再按照类型匹配。 -
支持类型不同:
@Autowired
只支持Spring框架中的自动装配类型;@Resource
不仅支持Spring框架中的自动装配类型,还支持JDK提供的@Resource
和javax inject提供的@Inject
注解。 -
是否强制要求bean存在:
@Autowired
要求依赖的bean必须存在,否则会抛出异常;而@Resource
则不强制要求依赖的bean存在。
综上,通常来说,
@Autowired
更加方便快捷,可以自动注入spring
bean,而@Resource
比较灵活,可以注入其他程序中的对象、资源等。但是具体使用哪种注解还需要根据实际情况具体分析。