@Autowired和@Resourse关键字的区别
这个问题是平时我们面试时面试官非常喜欢问的一个问题。首先,@Resourse是javax.annother包提供的一个注解关键字,是Java EE的方法,但Spring也支持该注解的导入,而@Autowired是Spring提供的关键字。
它们的共同点是都是用来装配Java Bean的(这是一句废话哈哈哈),两者都可以写在字段或者是setter方法上,如果加在字段上,那对应的字段就不需要再添加setter方法了。两者也都可以配合@Component关键字来使用,在ApplicationContext.xml加入如下配置后(基包后面根据实际情况填自己需要Spring扫描的包名),可以加在普通pojo类上,效果相当于<Bean id="******" class="*******">,直接将普通的pojo实例化到Spring容器中。
<context:component-scan base-package=”******”>
但他们的差异也是显著的。首先,@Resourse关键字是byName的,也就是根据JNDI名称来装配Bean,其不关心Bean的类,例如,Spring想找一个叫做小明的人,@Resourse只会去寻找小明,而它不关心小明到底是一个男人还是一个女人。而@Autowired是byType的,刚好与@Resourse相反,@Autowired只关心Bean的类型,而不关心这个Bean到底叫什么。如果存在多个同样类型的Bean,就会报出BeanCreationException的错误,要解决这个问题,可以修改如下配置,此时@Autowired关键字也会变成byName,但这种方法不是很推荐。
<beans default-autowire="byName"/>
此处我们应当使用另一种方法,使用@Qualifier关键字,@Qualifier(*****)来让Spring根据Bean的名称来进行装配。此外,@Resourse可以使用复数形式@Resourses来装配多个Bean。
@Autowired和@Resourse关键字的区别的更多相关文章
- c++模板编程-typename与class关键字的区别
最近一直在研究c++模板编程,虽然有些困难,但希望能够坚持下去.今天,在书上看见一个讨论模板编程typename与class两个关键字的区别,觉得挺有意义的,就把它们给总结一下. 先看一个例子: te ...
- 数据库中in和exists关键字的区别
数据库中in和exists关键字的区别 in 是把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询. 一直以来认为exists比in效率高的说法是不准确的 ...
- C#中Monitor对象与Lock关键字的区别分析
这篇文章主要介绍了C#中Monitor对象与Lock关键字的区别,需要的朋友可以参考下 Monitor对象 1.Monitor.Enter(object)方法是获取 锁,Monitor.Exit(ob ...
- @property 关键字的区别详解
@property 关键字的区别详解:assign 与weak. __block 与 __weak.strong 与copy的区别 字数911 阅读269 评论2 喜欢8 在开发中经常使用属性@pro ...
- 【Java_基础】java中static与final关键字的区别
1.static关键字 经static关键字修饰的成员被该类的所有对象所共享,任意一对象对静态变量的修改其它对象都是可见的.通常通过类名来引用static成员.类加载的连接阶段将会为静态成员变量在jv ...
- php中的self关键字和this关键字的区别和联系
php中的self关键字和this关键字的区别和联系 面向对象编程(OOP,Object OrientedProgramming)现已经成为编程人员的一项基本技能.利用OOP的思想进行PHP的高级编程 ...
- php中this,self,parent三个关键字的区别辨析
php中this,self,parent三个关键字的区别辨析 一.总结 一句话总结:this是指向对象实例的一个指针,self是对类本身的一个引用,parent是对父类的引用. 1.self关键字使用 ...
- nginx中root与alias关键字的区别
前言 近段时间秋招上岸了,于是每天疯狂补各种分布式基础,每天都在痛苦与快乐中度过. 在学习 nginx 的时候,遇到配置上的问题:root 与 alias 的区别,卡了大概三个小时,记录下来警醒自己不 ...
- Java标识符和关键字的区别!java基础 java必学
任何计算机语言都离不开标识符和关键字,那我们就来简单讲一下他们两者的区别,希望有助于大家的的理解!本篇文章干货满满,如果你觉得难懂的话可以看下高淇老师讲的Java300集的教学视频,分选集,深度剖析了 ...
随机推荐
- Java中的package和Import关键字的作用
一.package关键的作用 1.包的概念 package翻译为包,本质上就是一个文件夹,通过包组织项目结构的过程,就是通过包对应的文件夹管理.java和.class文件的过程. 2.包的作用 通过包 ...
- Docker NGINX 例子
版权所有,未经许可,禁止转载 章节 Docker 介绍 Docker 和虚拟机的区别 Docker 安装 Docker Hub Docker 镜像(image) Docker 容器(container ...
- ACM-售货员难题
题目描述:售货员的难题 某乡有n个村庄(1< n < 20),有一个售货员,他要到各个村庄去售货,各村庄之间的路程s(0 < s < 1000)是已知的,且A村到B村与B村到 ...
- POJ 2521:How much did the businessman lose
How much did the businessman lose Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9965 ...
- 洛谷 P5146 最大差值
题目传送门 好水的题... AC代码: #include<iostream> #include<cstdio> using namespace std; ,a,ans = -; ...
- 【LeetCode】验证二叉搜索树
[问题]给定一个二叉树,判断其是否是一个有效的二叉搜索树. 假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数.节点的右子树只包含大于当前节点的数.所有左子树和右子树自身必须也是二叉搜 ...
- SpringCloud学习之Sleuth服务链路跟踪(十二)
一.为什么需要Spring Cloud Sleuth 微服务架构是一个分布式架构,它按业务划分服务单元,一个分布式系统往往有很多个服务单元.由于服务单元数量众多,业务的复杂性,如果出现了错误和异常,很 ...
- 七、SAP中输出当前日期
一.在Sap中输出当前日期的函数是sy-datum,代码如下: 二.输出效果如下
- 用UICollectionView实现上下轮播的案例
// // RecommendNewsCell.swift // XMLYFM // // Created by Domo on 2018/8/2. // Copyright © 2018年 ...
- 深入理解Canvas Scaler
Canvas Scaler: 这是一个理解起来相当繁琐复杂的一个组件,但又是一个至关重要的组件,不彻底了解它,可以说对UGUI的布局和所谓的“自适应”就没有一个完整的认识. Canvas Scale指 ...