@Resource 和 @Autowired 都是用于依赖注入(Dependency Injection)的注解,但在使用和功能上有一些区别。
@Autowired 是Spring框架提供的注解,它可以根据类型自动装配相应的Bean对象。它可以用在字段、构造函数、Setter方法上,当多个Bean满足依赖关系时,可以使用 @Qualifier 注解指定具体的Bean名称进行装配。
示例:
@Autowired
private SomeService someService;
或者
@Autowired
public MyComponent(SomeService someService) {
this.someService = someService;
}
@Resource 是JavaEE标准中定义的注解,也可以用于依赖注入。它是按照名称进行匹配查找对应的资源,并装配给目标对象。它默认按照名称进行匹配,如果找不到与字段或方法参数同名的资源,则会按照类型进行匹配。
示例:
@Resource
private SomeService someService;
或者
@Resource
public void setSomeService(SomeService someService) {
this.someService = someService;
}
需要注意的是,在Spring框架中,默认情况下优先选择使用 @Autowired 进行依赖注入。如果您同时使用了 @Resource 和 @Autowired 来标记同一个属性时,Spring将优先选择 @Autowired 进行注入。
另外还有一个类似于 @Inject 注解,它也可以用于依赖注入,但是需要导入 javax.inject.Inject 包。与 @Autowired 功能类似,只是在一些特定场景下会有细微的差别。
内容由零声教学AI助手提供,问题来源于学员提问




