今天给大家分享Spring属性注入的注解@Autowired 和@Resource介,希望对大家能有所帮助!

一、@Autowired 注解

1.1 介绍

  • @Autowired注解默认按照类型容器中找到对应的组件:annotationContext.getBean(Person.class) 。

  • 如果找到多个相同类型的组件,再根据属性的名称作为组件id去spring容器中找:annotationContext.getBean("person") 。

  • required:属性默认为true,表示自动注入的Bean必须能够找到,否则就会报null,设置为false,可以在Spring容器自动注入Bean找不到的话,返回null,不会报错。

  • @Autowired可以和@Qualifie注解使用,用来指定注入的组件id,而不是使用属性名。

  • @Autowired默认先按Type进行匹配,如果找到多个bean,则又会按照组件id方式进行匹配(需要@Qualifier("name")配合)。

1.2 作用

@Autowired表示被修饰的Java类需要注入对象,spring会自动扫描所有被@Autowired标注的类,然后根据在IOC容器中找到匹配的类进行自动注入。

二、@Resource 注解

2.1 介绍

@Resource 注解和@Autowired注解作用比较相似,也是实现组件的自动注入。它是JAVA2EE提供的注解,使用的时候需要导入javax.annotation.Resourc 。

@Resource默认按照组件id自动注入,如果按照默认组件id找不到bean时,再按照类型去匹配。示例:

public class UseInforDao {

@Resource(name ="person",type = Person.class)

private UserInfo userInfo;

}

2.2 @Resource 自动注入顺序

  • 同时指定了组件id和type,则从Spring上下文中找到唯一匹配的bean进行注入,找不到则抛出异常。

  • 指定了组件id,则从上下文中查找名称(id)匹配的bean进行注入,找不到则抛出异常。

  • 指定了type,则从上下文中找到类型匹配的唯一bean进行注入,如果找不到或者找到多个,都会抛出异常。

  • 既没有指定组件ide,又没有指定type,则自动按照组件id方式进行注入;找不到的话,则回退为一个原始类型进行匹配,如果匹配则自动注入。

三、@Autowired 和 @Resource区别

3.1 相同点:

  • 两者都是实现Bean的注入功能

  • 两者都可以写在属性字段或者setter方法上。两者如果都写在属性字段上,setter方法可以省略掉。

3.2 不同点:

  • @Autowired属于Spring注解,@Resource 油JAVA2EE提供,需要导入包javax.annotation.Resource。

  • @Autowired默认按Type注入,组件id的方式需要与@Qualifier("name")配合使用;@Resource同时支持Type和组件id方式注入,默认按组件id注入。

  • @Autowired只包含一个参数:required,标明是否开启自动注入,默认是true。而@Resource包含七个参数,最重要的两个参数是:name 和 type,用来指定注入的方式。

  • @Autowired可以作用在:构造器、方法、参数、成员变量和注解上,@Resource可以作用在:类、成员变量和方法上。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

Spring系列(十):@Autowired 和@Resource注解用法介绍相关推荐

  1. @autowired注解_品Spring:对@Autowired和@Value注解的处理方法(文末附spring系列资源合集)...

    作者:编程新说李新杰 出自:微信公众号"编程新说" 原文:品Spring:对@Autowired和@Value注解的处理方法 在Spring中能够完成依赖注入的注解有JavaSE提 ...

  2. @AutoWired和@Resource注解异同分析

    相同点: @AutoWired和@Resource注解都是从Spring容器中取出相应的bean对象,自动装配. 不同点: @AutoWired: 默认根据类型进行自动装配,依赖的对象必须存在,如果允 ...

  3. @Autowired和@Resource注解的区别?

    谈到Spring的注解,@Autowired和@resource这两个注解不得不提.@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上 那@A ...

  4. Spring系列(七):@FactoryBean注解用法介绍

    今天给大家介绍@FactoryBean注解用法,希望对大家能有所帮助! 1.@FactoryBean注解介绍 FactoryBean是实现了FactoryBean<T>接口的Bean,可以 ...

  5. Spring系列(六):@Conditional注解用法介绍

    今天给大家介绍@Conditional懒加载注解用法,希望对大家能有所帮助! 1.@Conditional注解介绍 @Conditional是Spring4版本新提供的一种注解,它的作用是按照设定的条 ...

  6. Spring系列(五):@Lazy懒加载注解用法介绍

    今天给大家介绍@Lazy懒加载注解用法,希望对大家能有所帮助! 1.@Lazy 懒加载注解的概念 SpringIoC容器会在启动的时候实例化所有单实例 bean .如果我们想要实现 Spring 在启 ...

  7. Spring系列(二):Bean注解用法介绍

    今天给大家介绍一下Spring中Bean注解的用法,后续的文章给大家介绍Sping其他注解用法,希望对大家日常工作能有所帮助! 1.首先创建一个maven项目引入spring依赖 <depend ...

  8. Spring系列(十一):@Profile 注解用法介绍

    今天给大家分享Spring属性注入的注解@Profile 介绍,希望对大家能有所帮助! 一.@Profile 注解的作用 在Spring容器中如果存在同一类型的多个组件,可以使用@Profile注解标 ...

  9. Springboot中@autowired和@resource注解的区别

    @Autowired @Autowired是Spring提供的,默认按照byType 注入,也就是按bean的类型来传入.如果需要指定名字,那么需要使@Qualifier("这是bean的名 ...

最新文章

  1. linux看测试环境版本,最新版 EOS 在 Ubuntu 18.04.1 LTS 环境上的安装测试教程
  2. 2.2.1 静态成员
  3. mysql索引分析_MySQL索引分析和优化
  4. Laravel核心解读 -- 用户认证系统(基础介绍)
  5. Vue.js 与 ActiveX 控件
  6. spring较为常用注解
  7. java 485通讯_JAVA开发工程师 | 广州市三地信息技术有限公司
  8. 天锐绿盾加密软件如何制作外发文件
  9. 提高WordPress访问速度的十种方法
  10. 电脑自带软件使图片底色变为透明(抠图白底)
  11. 字节跳动的产品经理是怎么工作的?
  12. 主板点不亮 复位BIOS_【硬件篇】主板排线怎么插?确认过眼神,就是这么简单!...
  13. 一个免费全格式MP3音乐播放器的工具
  14. 毕业后的去向:继续读研还是直接就业?
  15. Zadig 构建效率提升 40% 背后的实践思路
  16. Android showStatusIcon on inactive InputConnection异常
  17. Android Sensor感应器:获取用户移动方向,指南针原理
  18. main主函数参数解析
  19. Acme Corporation UVA11613 网络流
  20. 反感料理包的真正原因,正在被“恶心”掩盖

热门文章

  1. 医疗项目中对网编的一些理解看法
  2. 720x576P时序参数图
  3. HALCON示例程序classify_image_class_svm.hdev使用SVM分类器对多通道图像进行分类
  4. 将数组作为参数,调用该函数时候给的是数组地址还是整个数组
  5. 图像像素点赋值_Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像...
  6. springboot默认数据源如何设置连接数_Spring Boot系列之配置数据库连接池
  7. python写文字方法_Transcrypt: 用Python写js的方法
  8. 如何通过windows控制linux,如何从Windows远程控制Linux | MOS86
  9. mysql工具的使用_产品操作MySQL入门篇-工具使用
  10. 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波7 - 直方图处理 - 直方图、归一化直方图