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

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

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

image_09ac8ed3.png

一、@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可以作用在:类、成员变量和方法上。
相关文章
|
4天前
|
Java 开发者 Spring
深入理解Spring Boot的@ComponentScan注解
【4月更文挑战第22天】在构建 Spring Boot 应用时,@ComponentScan 是一个不可或缺的工具,它使得组件发现变得自动化和高效。这篇博客将详细介绍 @ComponentScan 的基本概念、关键属性及其在实际开发中的应用。
21 4
|
6天前
|
Java 开发者 Spring
Spring Framework 中的 @Autowired 注解:概念与使用方法
【4月更文挑战第20天】在Spring Framework中,@Autowired 注解是实现依赖注入(Dependency Injection, DI)的一种非常强大的工具。通过使用 @Autowired,开发者可以减少代码中的引用绑定,提高模块间的解耦能力
29 6
|
14天前
|
XML Java 数据格式
进阶注解探秘:深入Spring高级注解的精髓与实际运用
进阶注解探秘:深入Spring高级注解的精髓与实际运用
26 2
|
14天前
|
XML Java 数据格式
从入门到精通:Spring基础注解的全面解析
从入门到精通:Spring基础注解的全面解析
30 2
从入门到精通:Spring基础注解的全面解析
|
18天前
|
Java 容器
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
SpringBoot使用配置注解开启自动配置功能&整合spring-boot-configuration-processor
14 0
|
XML 前端开发 Java
【Spring基础系列3】Spring常用的注解
前两篇文章分别讲解了Sping IOC的基础知识,以及Spring通过注解装配Bean的常用方式,包括@Component、@Repository、@Service、@Controller、@Autowired、@Resource和@Qualifier,这篇文章主要对剩余高频的注解进行讲解。
161 0
【Spring基础系列3】Spring常用的注解
|
XML 前端开发 Java
Spring最常用的36个注解,哪些你还不知道?
随着技术的更新迭代,Java5.0开始支持注解。而作为java中的领军框架spring,自从更新了2.5版本之后也开始慢慢舍弃xml配置,更多使用注解来控制spring框架。 而spring的的注解那么多,可能做java很多年,都用不上。这里按照类型总结了这7种最常用的注解。 一. 核心注解 @Require 此注解用于bean的setter方法上。表示此属性是必须的,必须在配置阶段注入,否则会抛出BeanInitializationExcepion。 @Autowired 此注解用于bean的field、setter方法以及构造方法上,显式地声明依赖。根据type来autowiring。
104 0
Spring最常用的36个注解,哪些你还不知道?
|
XML 前端开发 Java
Spring最常用的36个注解,哪些你还不知道?
36个Spring最常用的7大类注解总结
Spring最常用的36个注解,哪些你还不知道?
|
Java Spring
一张图带你了解——Spring常用注解
spring常用注解 (1).png 参考官网:https://springframework.guru/spring-framework-annotations/
1354 0
|
Java 容器 Spring
Spring常用注解
FastJson时间格式化: @JSONField(format = “yyyy-MM-dd hh:mm:ss”) 单元测试加载Spring配置: @RunWith(SpringJUnit4ClassRunner.
1354 0