欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > @Autowired和@Resource的区别

@Autowired和@Resource的区别

2025/2/25 21:51:59 来源:https://blog.csdn.net/nonagontech/article/details/143807091  浏览:    关键词:@Autowired和@Resource的区别

相同点:都可以装配Bean,都可以写在字段上,或写在setter方法上。

不同点:

@Resource 由jdk提供

@Autowired 由spring提供

import org.springframework.beans.factory.annotation.Autowired;
import javax.annotation.Resource;

@Autowired//默认按type注入
@Qualifier("cusInfoService")//一般作为@Autowired()的修饰用
@Resource(name="cusInfoService")//默认按name注入,可以通过name和type属性进行选择性注入

一般@Autowired和@Qualifier一起用,@Resource单独用。

@Autowired(注解是属于spring的)默认按照类型装配,这个,默认情况下必须要求以来的对象必须存在,如果要允许Null值,可以设置它的required属性为false,如果需要按照name装配,则需要@Qualifier注解一起使用

@Resource(这个注解是属于J2EE),默认按照名称进行装配(<bean id="query" class="QueryWithCache"></bean>  按名称query来配置 ),可以配置name和type指定按照类型还是名称注入

@Autowired 按照byType的方式自动注入,再去byName

@Resource 默认按照byName自动注入

1.装配顺序如果同时指定了Name和Type,则spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常

2.如果指定了name,则从上下文中查找名称id匹配的Bean进行装配,找不到则抛出一场

3.如果指定了type,则从上下文找到类型匹配的bean进行装配,找不到或者找到多个,都会抛出异常。

4.如果没有指定name,又没有指定type,则自行按照byName的方式进行装配。如果没有匹配,则退回一个原始类型进行匹配,如果匹配则自动装配

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词