博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@Autowired与@Resource的使用方法和差别
阅读量:4971 次
发布时间:2019-06-12

本文共 1605 字,大约阅读时间需要 5 分钟。

一、@Autowired:

1、Spring 2.5 引入了 @Autowired 凝视,它能够对类成员变量、方法及构造函数进行标注,完毕自己主动装配的工作。 通过 @Autowired的使用来消除 set 。get方法。

这个注解就是spring能够自己主动帮你把bean里面引用的对象的setter/getter方法省略。它会自己主动帮你set/get。

<bean id="userDao" class="..."/>
<bean id="userService" class="...">
<property name="userDao">
<ref bean="userDao"/>
</property>
</bean>
这样你在userService里面要做一个userDao的setter/getter方法。

但假设你用了@Autowired的话,你仅仅须要在UserService的实现类中声明就可以。

@Autowired
private IUserDao userdao;

PS:

1、@Autowired是依据类型进行自己主动装配的。

2、@Autowired也能够手动指定依照byName方式注入,使用@Qualifier标签,比如:

@Autowired() @Qualifier("baseDao")
private BaseDao baseDao;

二、@Resource的作用相当于@Autowired,仅仅只是@Autowired按byType自己主动注入,而@Resource默认按 byName自己主动注入。
@Resource有两个属性是比較重要的,分是name和type,Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。

所以假设使用name属性,则使用byName的自己主动注入策略,而使用type属性时则使用byType自己主动注入策略。假设既不指定name也不指定type属性,这时将通过反射机制使用byName自己主动注入策略。

@Resource装配顺序  
1.假设同一时候指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常  
2. 假设指定了name。则从上下文中查找名称(id)匹配的bean进行装配。找不到则抛出异常
3.假设指定了type,则从上下文中找到类型匹配的唯一bean进行装配。找不到或者找到多个,都会抛出异常  
4.假设既没有指定name,又没有指定type。则自己主动依照byName方式进行装配;假设没有匹配,则回退为一个原始类型进行匹配,假设匹配则自己主动装配。
三、@Autowired与@Resource的差别
1、@Autowired与@Resource都能够用来装配bean. 都能够写在字段上,或写在setter方法上。

 


2、@Autowired默认按类型装配(这个注解是属业spring的)。默认情况下必需要求依赖对象必须存在,假设要同意null 
值,能够设置它的required属性为false。
3、@Resource(这个注解属于J2EE的),默认安照名称进行装配,名称能够通过name属性进行指定, 
假设没有指定name属性,当注解写在字段上时。默认取字段名进行依照名称查找。假设注解写在setter方法上默认取属性名进行装配。

 

当找不到与名称匹配的bean时才依照类型进行装配。可是须要注意的是,假设name属性一旦指定,就仅仅会依照名
称进行装配。
ps: @Resource注解在字段上,这样就不用写setter方法了,而且这个注解是属于J2EE的,降低了与spring的耦合。

转载于:https://www.cnblogs.com/brucemengbm/p/6747689.html

你可能感兴趣的文章
.Net码农学Android---系统架构和基本概念
查看>>
Windows Phone开发(37):动画之ColorAnimation
查看>>
DevExpress的Web控件汉化方法
查看>>
js中escape,encodeURI,encodeURIComponent 区别(转)
查看>>
结对编程项目-四则运算整体总结
查看>>
Android studio怎么修改文件名
查看>>
sass学习笔记-安装
查看>>
多缓存并存
查看>>
Flask (二) cookie 与 session 模型
查看>>
修改添加网址的教程文件名
查看>>
hdu 1045:Fire Net(DFS经典题)
查看>>
[BZOJ 1017][JSOI2008]魔兽地图DotR(树形Dp)
查看>>
裁剪图片
查看>>
数据结构实习 problem L 由二叉树的中序层序重建二叉树
查看>>
VS中展开和折叠代码
查看>>
如何确定VS编译器版本
查看>>
设置PL/SQL 快捷键
查看>>
个人阅读作业7
查看>>
转载:深入浅出Zookeeper
查看>>
GMA Round 1 新程序
查看>>