@Resource和@Autowired两者都是做bean的注入使用。

其实@Resource并不是Spring的注解,他的包是javax.annotation.Resource 需要导入。但是Spring支持该注解的注入。

共同点:两者都可以写在字段和setter方法上。两者如果都写在字段上,就不需要写写setter方法。

不同点如下:

先来说一说@Autowired

@Autowired为Spring提供的注解,

需导入Package:org.springframework.beans.factory.annotation.Autowired;

只按照byType 注入。

@Autowired
private UserDao  userDao;//用于字段上
@Autowired
public void setUserDao(UserDao userDao) {//用于属性的setter方法上this.userDao= userDao;
}

@Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false。如果我们想使用按名称装配,可以结合@Qualifier注解一起使用。如下:

@Autowired  @Qualifier("userDao")
private PersonDao  personDao;

再说说@Resource

@Resource默认按 byName 自动注入,由J2EE提供。

需导入Package:  javax.annotation.Resource

@Resource有两个中重要的属性:name和type ,而Spring将@Resource注解的name属性解析为bean的

名字,而type属性则解析为bean的类型。所以如果使用name属性,则使用byName的自动注入策略,而使用

type属性时则使用 byType自动注入策略。如果既不指定name也不指定type属性,这时将通过反射机制使用byName自动注入策略。

@Resource(name=“userDao”)
private UserDao  userDao;//用于字段上
@Resource(name=“userDao”)
public void setUserDao(UserDao userDao) {//用于属性的setter方法上this.userDao= userDao;
}

注:最好是将@Resource放在setter方法上。

@Resource装配顺序

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

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

  (3). 如果指定了type,则从上下文中找到类型匹配的唯一bean进行装配,找不到或者找到多个,都会抛出异常;

  (4). 如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配;

@Resource的作用相当于@Autowired,只不过@Autowired按byType自动注入。

本文转载自:http://blog.csdn.net/angus_17/article/details/7543478

Spring 注解 @Resource和@Autowired相关推荐

  1. Spring 注解 @Resource和@Autowired(转)

    鸣谢:http://my.oschina.net/u/216467/blog/205951 @Resource和@Autowired两者都是做bean的注入使用. 其实@Resource并不是Spri ...

  2. Spring注解@Resource和@Autowired区别对比

    @Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Sprin ...

  3. Spring中@Resource与@Autowired、@Qualifier的用法与区别

    Spring中@Resource与@Autowired.@Qualifier的用法与区别 1.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法 ...

  4. spring:注解@Resource,实现引用类型的赋值

    注解@Resource, 根据byName赋值,找不到. 就会根据byType再找一次,赋值 @Resource和@Autowired的区别: @Autowired来自spring框架, 而 @Res ...

  5. @autowired注解注入为null_Java面试必备:依赖注入注解@Resource和@Autowired

    1. 前言 @Resource和@Autowired注解都可以在Spring Framework应用中进行声明式的依赖注入.而且面试中经常涉及到这两个注解的知识点.今天我们来总结一下它们. 2. @R ...

  6. 一文总结Spring 注解及作用详解

    文章目录 开启注解扫描配置 @RequestMapping 声明bean的注解 注入bean的注解 spring配置文件中读取properties配置文件 j配置类相关注解 切面(AOP)相关注解 @ ...

  7. Spring注解@Component、@Repository、@Service、@Controller,@Autowired、@Resource用法

    一.Spring定义bean,@Component.@Repository.@Service 和 @Controller Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥 ...

  8. 【Spring注解系列13】Spring自动装配总结:@Autowired、@Resource、@Qualifier、@Inject

    目录 1.@Autowired.@Resource.@Qualifier.@Inject 1).@Autowired 2).@Resource与@Inject 3). @Autowired参数取值 2 ...

  9. spring 注解说明以及@Resource和@Autowired的区别

    2019独角兽企业重金招聘Python工程师标准>>> 一.spring常见的注解有 @Component.@Repository.@Service.@Controller @Aut ...

最新文章

  1. Spring Boot Web 开发相关总结
  2. 引用和指针的差别,数组和指针的差别
  3. Python如何引用豆瓣api镜像地址
  4. 全志A33-串口SLIP的使用
  5. 2020互联网岳麓峰会“软件再出发论坛”成功举办
  6. select * from data where 姓名_SQL基础where
  7. 微软MSDN订阅用户已可提前手工下载Windows 10安装包
  8. 真实网络环境下使用易邮搭建网络邮件服务器并测试通过
  9. TP框架 URL规则重写 Apache配置
  10. 如何查看wifi信息并对其进行管理?这些app帮你一键掌控你的wifi信息
  11. Transaction 那点事儿
  12. Windows上帝模式——隐私浏览必备
  13. HBuilder软件下载及安装教程
  14. Cartographe纯雷达计算位姿的前后端总结
  15. Java实现微信支付之Native模式
  16. 微信小程序app.ts全局变量出现报错?
  17. 如何设计网络服务器?
  18. vue中图片引入问题以及实现openlayers地图标记
  19. Java字节流读取shp_SHN系列语音卡调试文档.doc
  20. 【白话机器学习系列】白话Broadcasting

热门文章

  1. 机器人J中WPR_北方工业大学服务机器人研究项目介绍
  2. 100g流量在电脑上可以用多久_三大运营商5G体验方案出炉!100G一个月够不够?...
  3. 利用python制作漂亮的词云图_利用python制作漂亮的词云图
  4. Java中如何引用文档对象模型_在JAVA中使用文档对象模型DOM经验小结
  5. java 限制参数类型_java定义受限制的类型参数操作
  6. Unity Fine Prued Tiled Light (FPTL)
  7. redis学习(四)
  8. Redis在windows下安装过程(转载)
  9. 树链剖分+线段树 单点修改 区间求和 模板
  10. appium--每次启动会重新安装的问题(没试过)