spring注入注解@Resource和@Autowired
一、@Autowired和@Qualifier
@Autowired是自动注入的注解,写在属性、方法、构造方法上,会按照类型自动装配属性或参数。该注解,可以自动装配接口的实现类,但前提是spring容器中只有一个实现类的bean,多个bean会报错。同样,自动装配其他类型时也一样。
但同样的类型的bean有多个实例或同样的接口有多个实现类的bean,可以使用@Qualifier指定bean名称,指定bean名称后,就会按照bean的名称匹配。
- 写在属性上,会自动注入bean到属性里。
- 写在方法或构造方法上,会将自动注入bean到参数里。
另外,@AutoWired无法对String、int等常量数据注入。
装配规则:
当添加@Qualifier时,按照bean的名称匹配。
当只写@Autowired时,按照类型自动装配,若同时有多个或一个都不满足,会报错。
1、写在属性上
@Autowired默认按照类型注入,匹配属性类型,也可使用@Qualifier指定bean名称,使用bean名称装配。
@Autowired
@Qualifier("userServiceImpl")
private UserService userService;
2、写在方法上
@Component("testSon")
public class Son {
int num = 99;
}
@Autowired
public Father(@Qualifier("testSon") Son son) {
this.son = son;
}
二、@Resource
@Resource并非spring中的注解,而是tomcat内的javax.annotation包下的注解。
该注解可以写在属性上或方法上,实现自动注入。不能写在构造方法上。
装配规则:
当只写注解,默认按属性名查找beanid,查到则直接装配,若spring容器中没有该beanid,则继续安装属性类型匹配,若只有一个匹配,则装配;若同时满足多个则报错。
当使用了name参数,则只按照name值匹配beanid,没有满足条件,会报错。
1、@Resource默认安照属性名注入,可使用name和type属性指定bean名称和类型
@Resource(name="testSon")
Son son;
2、写在set方法上
@Resource(name="testSon")
public void setSon(Son son) {
this.son = son;
}
spring注入注解@Resource和@Autowired的更多相关文章
- 聊聊依赖注入注解@Resource和@Autowired
1. 前言 @Resource和@Autowired注解都可以在Spring Framework应用中进行声明式的依赖注入.而且面试中经常涉及到这两个注解的知识点.今天我们来总结一下它们. 2. @R ...
- Spring注解@Resource和@Autowired区别对比
转载:http://www.cnblogs.com/think-in-java/p/5474740.html @Resource和@Autowired都是做bean的注入时使用,其实@Resource ...
- Spring 注解 @Resource和@Autowired(转)
鸣谢:http://my.oschina.net/u/216467/blog/205951 @Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spri ...
- Spring注解 @Resource和@Autowired
@Resource和@Autowired两者都是做bean的注入使用.其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spri ...
- Spring 注解 @Resource和@Autowired
@Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入.但是Spr ...
- Spring注解@Resource和@Autowired的区别
@Resource和@Autowired都是用来做bean的依赖注入的,两者都可以写在字段和setter方法上. java为我们提供了 javax.annotation.Resource这个注解. s ...
- Spring注解@Resource和@Autowired区别对比、spring扫描的默认bean的Id、程序获取spring容器对象
-------------------------注解扫面的bean的ID问题-------------------------- 0.前提需要明白注解扫描出来的bean的id默认是类名首字母小写,当 ...
- 【转载】Spring注解@Resource和@Autowired区别对比
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...
- 注解@Resource和@Autowired区别对比
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...
随机推荐
- [PHP] 一个免费、开源的基于tp5+layui2.1.5开发的快速开发框架
推荐 一个免费.开源的基于tp5+layui2.1.5开发的快速开发框架,既可以用来学习,也可以用来实际项目的快速开发: 码云下载:https://gitee.com/eduaskcms/eduask ...
- 【LG2567】[SCOI2010]幸运数字
[LG2567][SCOI2010]幸运数字 题面 洛谷 题目大意: 问你区间\([L,R](1\leq L\leq R\leq 10^{10})\)中有几个数是仅由\(6,8\)组成的数的倍数. 题 ...
- 如何下载最新版本和旧版本的eclipse?
1.进入官网,点击download,进入download界面,如果想要最新的版本的eclipse,直接点击下载即可,如图所示: 2.如果想下载旧版本的eclipse的话,可以点击上图的的downloa ...
- [原创] Agilent 34410A 表与计算机通讯
1. 接口选择 万用电表出厂时选定为HP-IB接口,应选择为RS-232接口 E:I/O MENU – 2:INTERFACE 选择RS-232 2. 设定波特率 默认9600 E:I/O MENU ...
- python入门之作用域
作用域的分类 1.全局作用域 全局可以调用的名字就存在于全局作用域 内置名称空间 + 全局名称空间 2.局部作用域 局部可以调用的名字就存放于局部作用域 局部名称空间 3. global 声明全局变量 ...
- DestroyImmediate和Destroy
DestroyImmediate立即对对像进行销毁并从内存中移除: Destroy销毁场景中的物体,但内存中还存在,当令它需要销毁时,只是给一个标识.而内存中它依然是存在的,只有当内存不够,或一段时间 ...
- 027 ElasticSearch----全文检索技术02---快速入门
1.基本概念 Elasticsearch也是基于Lucene的全文检索库,本质也是存储数据,很多概念与MySQL类似的. 注意:6.0之前的版本有type(类型)概念,type相当于关系数据库的表,E ...
- idea 全局内容搜索和替换
在做项目时,有时会在整个项目里或指定文件夹下进行全局搜索和替换,这是一个很方便功能.使用方法如下: 一.全局搜索1.使用快捷键Ctrl+Shift+F打开搜索窗口,或者通过点击Edit–>Fin ...
- 低版本的 eclipse 不支持 tomcat8.5 的解决方法
目录 低版本的eclipse 不支持 tomcat8.5,但是还想使用的方法 低版本的eclipse 不支持 tomcat8.5,但是还想使用的方法 1. 介绍: 我在使用 mars 版本的 ec ...
- c++中如何判断sqlite表是否存在
在项目中遇到需要判断sqlite数据库中某个表是否存在,上网搜索一些资料后,解决了问题,如下: 首先,在每个sqlite数据库中,都有一个名为sqlite_master的表,它定义了数据库的模式,它的 ...