先看源码注释

/**Autowired
 * Marks a constructor, field, setter method or config method as to be
 * autowired by Spring's dependency injection facilities. */
/**Resource 
 * 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.  */

1.相同:

都可以标记fields、method

都用来注入bean

2.不同

Autowired:

1)由spring提供,需要import org.springframework.beans.factory.annotation.Autowired

2)依据bean类型匹配注入

3)具有required属性,默认required=true,这样必须有且仅有一个该类型的bean对象.如果设置required=false,则该类型bean对象可以为null

4)如果想使用名称来装配,可以结合@Qualifier注解一起使用。如:@Qualifier("xxx")


Resource :

1)由java提供,需要import javax.annotation.Resource

2)默认依据bean 名称匹配注入

3)具有name、type重要属性,使用方法如下:

如果同时指定name和type属性,这样必须有且仅有一个该名称、该类型的bean对象,否则抛出异常。

如果只指定name(@Resource(name="xxx"))属性,则必须有一个id="xxx"的bean,否则抛出异常。

如果只指定了type属性,这样必须有且仅有一个该类型的bean对象,否则抛出异常。

如果name、type属性都没有指定,则spring会按照name=field值查找bean;如果没有找到,则按类型进行查找;如果没有找到,抛出异常

4)另外还有authenticationType、shareable、mappedName、description属性,用的比较少,这里不详细讲解。



©著作权归作者所有:来自51CTO博客作者朱晋君的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 统信UOS系统中设置WPS双面打印的方法
  2. 4.01模板字面量和标签函数
  3. 面向对象系列教材 (二)- Java类的属性
  4. 变量系列教材 (四)- 在Java中进行基本类型的类型转换
  5. 变量系列教材 (三)- 什么是Java的字面值
  6. 变量系列教材 (二)- Java中有八种基本变量类型
  7. 实例演示flex容器中的四个属性的功能,参数,以及作用
  8. 【Vue框架学习】Vue常用指令、事件修饰符、按键修饰符、计算属性
  9. vue2基础语法2与监听属性和计算属性

随机推荐

  1. 如何在windows 10的linux子系统中启动jup
  2. linux环境下,配置eclipse nodejs开发环境
  3. [置顶] Linux 内核学习(1)
  4. linux下crontab 任务不执行的可能原因总
  5. 第四组内部linux比赛命题
  6. 有种生活态度叫 Linux
  7. Shell编程笔试题
  8. MEMCACHED缓存及状态查看
  9. CentOS7.2 通过nfs设置共享文件夹
  10. wget在linux中安装出现错误解决办法