鸣谢:http://my.oschina.net/u/216467/blog/205951

@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

首先通过eclipe查看其官方解释:

javax.annotation.Resource
@Target(value={FIELD, METHOD, TYPE})
@Retention(value=RUNTIME)

The Resource annotation marks a resource that is needed by the application. This annotation may be applied to an application component class, or to fields or methods of the component class. When the annotation is applied to a field or method, the container will inject an instance of the requested resource into the application component when the component is initialized. If the annotation is applied to the component class, the annotation declares a resource that the application will look up at runtime.

--资源注释标识应用程序所需要的资源。此注释可应用于应用组件类,或用于组件类的字段或方法。当将注释应用于某个字段或方法时,容器将在该组件初始化时向应用程序组件注入所需资源的实例。如果将注释应用于组件类,则该注释声明该应用程序将在运行时查找该资源。

@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自动注入。

Spring 注解 @Resource和@Autowired(转)相关推荐

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

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

  2. Spring 注解 @Resource和@Autowired

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

  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. php redis删除所有key,PHP 对 Redis key 值的操作
  2. formdata 接受参数中带有class 对象_Django(五)- 请求与响应 - request对象
  3. Git的commit之后的撤销reset
  4. Scrapy中Request的回调函数不执行
  5. 如何使用 mock 数据在本地运行 SAP Fiori Elements
  6. mysql8审计_审计对存储在MySQL 8.0中的分类数据的更改
  7. java伪代码生成器_JAVA单例模式的实现伪代码
  8. Android 高仿QQ5.2双向側滑菜单DrawerLayout实现源代码
  9. 纯CSS实现页签切换效果
  10. 计算机组成原理——第三章
  11. 在线动态几何编辑器 GeometryEditor
  12. 单片机的一些名词解释
  13. 使用Sencha cmd安装extjs6
  14. 构建Spring Cloud项目找不到Application类
  15. 【第三方互联】2、创建腾讯QQ互联应用
  16. 物联网应用案例:镇海智慧水务
  17. windows安装mmdetection
  18. Android开发 Studio4.0 APP logo 适配
  19. 央行超级网银8月上线;Win7市场份额突破10%(每日关注2010.4.2)
  20. gulp : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\gulp.ps1

热门文章

  1. (字符串的处理4.7.22)POJ 3337 Expression Evaluator(解析C风格的字符串)
  2. Ubuntu安装软件失败
  3. setcookie无效
  4. nyoj158-省赛来了
  5. c++ vector最大值_第14章 火柴人的无尽冒险(《C和C++游戏趣味编程》配套教学视频)...
  6. linux mysql 自动加斜杠_【实战演练】Linux操作系统19-Mysql主主复制加Keepalived高可用...
  7. java queue 线程安全_java并发编程之线程安全方法
  8. 计算机应用基础东师,2018年东师计算机应用基础.doc
  9. poi设置单元格格式为文本_身份证号乱码?日期显示不对?都是单元格格式的锅...
  10. python分片是什么_python中的分片