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 ...
随机推荐
- 第08组 Beta冲刺(3/5)
队名:955 组长博客:点这里! 作业博客:点这里! 组员情况 组员1(组长):庄锡荣 过去两天完成了哪些任务 文字/口头描述 ? 维持进度,检查需求 展示GitHub当日代码/文档签入记录 接下来的 ...
- 不了解这12个语法糖,别说你会Java!
阅读本文大概需要 10 分钟. 作者:Hollis 本文从 Java 编译原理角度,深入字节码及 class 文件,抽丝剥茧,了解 Java 中的语法糖原理及用法,帮助大家在学会如何使用 Java 语 ...
- Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...
- Maven 教程(6)— Maven之pom.xml文件简单说明
原文地址:https://blog.csdn.net/liupeifeng3514/article/details/79543963 通过前面几部分知识,我们对maven已经有了初步的印象,就像Mak ...
- Python 3.X 练习集100题 05
用 *号输出字母 C的图案 方法1: print(" ***** ") print(" ** * ") print(" ** ") prin ...
- 用FTPClient,执行到ftp.storeFile(fileName, inputFile);无反应了
Q:用FTPClient,执行到ftp.storeFile(fileName, inputFile):无反应了 A: ftpclient.enterLocalPassiveMode(); ftp. ...
- excel 使用
列于列拼接
- C#多线程的同步与通信
C#中使用lock和Monitor控制多线程对资源的使用,最常见的生产者和消费者问题就是多线程同步和通信的经典例子.了解C#多线程的同步与通信. 一.关于lock和Monitor lock可以把一段代 ...
- Visual Studio 技巧
Visual Studio 技巧 1 常用设置 2 常用快捷键 2.1 系统默认快捷键 2.2 自定义快捷键 3 修复系统错误 1 常用设置 Text Editor -> All Languag ...
- 3DESC加密算法
3DESC 请求参数和响应参数全采用3des加密规则,由于我是用.NET对接的,而第三方是Java开发的,所以两种程序之间采用的算法有一点差异,java的3des加密采用的是"DESede/ ...