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可以作用在:类、成员变量和方法上。
相关文章
|
10天前
|
Java Spring
【Spring】方法注解@Bean,配置类扫描路径
@Bean方法注解,如何在同一个类下面定义多个Bean对象,配置扫描路径
136 73
|
5天前
|
Java Spring 容器
【SpringFramework】Spring IoC-基于注解的实现
本文主要记录基于Spring注解实现IoC容器和DI相关知识。
39 21
|
10天前
|
存储 Java Spring
【Spring】获取Bean对象需要哪些注解
@Conntroller,@Service,@Repository,@Component,@Configuration,关于Bean对象的五个常用注解
|
10天前
|
Java Spring
【Spring配置】idea编码格式导致注解汉字无法保存
问题一:对于同一个项目,我们在使用idea的过程中,使用汉字注解完后,再打开该项目,汉字变成乱码问题二:本来a项目中,汉字注解调试好了,没有乱码了,但是创建出来的新的项目,写的注解又成乱码了。
|
Java Spring
通过Spring Resource接口获取资源(6)
通过Spring Resource接口获取资源
1127 0
|
Java Spring 数据格式
Spring Resource接口获取资源
1.1.1. Resource简介  在Spring内部实现机制,针对于资源文件(配置的xml文件)有一个统一的接口Resource。   1.1.1.1. 接口定义的方法 1.exists():判断资源文件是否存在。
1607 0
|
Java Spring 数据格式
通过Spring Resource接口获取资源
通过Spring Resource接口获取资源 目录 1       Resource简介 2       通过ResourceLoader获取资源 3       在bean中获取Resource的方式   1       Resource简介        在Spring内部,针对于资源文件有一个统一的接口Resource表示。
924 0
|
3月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
256 2
|
11天前
|
Java 数据库连接 Maven
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
自动装配是现在面试中常考的一道面试题。本文基于最新的 SpringBoot 3.3.3 版本的源码来分析自动装配的原理,并在文未说明了SpringBoot2和SpringBoot3的自动装配源码中区别,以及面试回答的拿分核心话术。
最新版 | 深入剖析SpringBoot3源码——分析自动装配原理(面试常考)
|
18天前
|
NoSQL Java Redis
Spring Boot 自动配置机制:从原理到自定义
Spring Boot 的自动配置机制通过 `spring.factories` 文件和 `@EnableAutoConfiguration` 注解,根据类路径中的依赖和条件注解自动配置所需的 Bean,大大简化了开发过程。本文深入探讨了自动配置的原理、条件化配置、自定义自动配置以及实际应用案例,帮助开发者更好地理解和利用这一强大特性。
68 14