- 所属框架
@Autowired是Spring提供的注解,需要导入org.springframework.beans.factory.annotation.Autowired;
@Resource是有JZEE提供的,需导入包javax.annotation.Resource
依赖查找方式
@Autowired默认采用 类型(byType) 进行依赖查找。若存在多个相同类型的 bean,就需要结合@Qualifier注解来明确指定 bean 的名称。
@Resource:默认依据 名称(byName) 来查找依赖。若找不到对应的 bean,才会按照类型进行查找。可以通过name属性直接指定 bean 的名称。属性设置
@Autowired:具备required属性,该属性为布尔值,用于设定依赖是否必需,默认值是true。
@Resource:拥有更多属性,像name、type、lookup等,可对依赖查找行为进行更细致的控制。支持的注入类型
@Autowired:能够应用于构造函数、字段、setter 方法以及配置方法。
@Resource:主要适用于字段和 setter 方法。处理多个同类型 bean 的情况
@Autowired:当存在多个相同类型的 bean 时,会抛出NoUniqueBeanDefinitionException异常,此时必须搭配@Qualifier使用。
@Resource:通过name属性直接指定要注入的 bean 名称,可避免类型冲突问题。建议
使用@Resource可以提高代码的兼容性,特别是在需要与Java EE环境交互时。
@Autowired如果找不到匹配的Bean,会抛出一个异常,除非它使用了optional=true参数。
@Resource如果找不到匹配的资源,不会抛出异常,而是将变量设置为null