autowired和resource的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了autowired和resource的区别相关的知识,希望对你有一定的参考价值。

autowired和resource的区别:

1、@Autowired注解由Spring提供,只按照byType注入;@resource注解由J2EE提供,默认按照byName自动注入。

2、@Autowired默认按类型进行装配,@Resource默认按照名称进行装配。

3、如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。

4、如果指定了name,则从Spring上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。

5、如果指定了type,则从Spring上下文中找到类型匹配的唯一bean进行装配,找不到或找到多个,都抛出异常。

6、如果既没指定name,也没指定type,则自动按照byName方式进行装配。

在逻辑上与应用程序一起部署的任何不可执行的数据。资源可以在应用程序中作为错误信息显示,或者作为用户界面的一部分显示。资源可以包含多种形式的数据,包括字符串、图像和持久的对象等。

@Autowired是一种注解,可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作,@Autowired标注可以放在成员变量上,也可以放在成员变量的set方法上,也可以放在任意方法上表示,自动执行当前方法,如果方法有参数,会在IOC容器中自动寻找同类型参数为其传值。

这里必须明确:@Autowired是根据类型进行自动装配的,如果需要按名称进行装配,则需要配合@Qualifier使用。

参考技术A 两者功能差不多类似。Autowired是Spring框架的私家注解Resource属于标准框架JSR-250的通用注解..也就是说属于不同框架,需要调用不同接口及后面的类库实现使用时注意选择其中一套技术,不要混杂了

@Autowired和@Resource注解的区别?

谈到Spring的注解,@Autowired和@resource这两个注解不得不提。@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上

那@Autowired和@resource注解的区别是什么?

[email protected]是spring的注解,它的jar包在import org.springframework.beans.factory.annotation.Autowired。而@resource是属于java的,它的jar包在import javax.annotation.Resource;

2. @Autowired默认按类型装配byType,默认情况下必须要求依赖对象必须存在,如果要允许null值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用。@Resource注解默认按 byName自动注入,如果没有指定name属性,当注解写在字段上时,默认取字段名进行安装名称查找,如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。

 

以上是关于autowired和resource的区别的主要内容,如果未能解决你的问题,请参考以下文章

@Autowired 和@Resource区别

Spring 注释 @Autowired 和@Resource 的区别

@Autowired和@Resource注解的区别?

@Autowired和@Resource的区别

关于@Autowired和@Resource注解区别

@Resource和@Autowired的区别