@Resource,@Autowired,@Inject3种注入方式详解

简介: JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。

image.png

概况


@Resource,@Autowired,@Inject 这3种都是用来注入bean的,它们属于不同的程序中。


image.png


JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。


区别


@Resource


它有两个关键的属性:name-名称,type-类型


1、如果指定了name,type,则从Spring容器中找一个名称和类型相当应的一个bean,找不到则报错。


2、如果只指定了name,则从Spring容器中找一个名称和name一样的bean,找不到则报错。


3、如果只指定了type,则从Spring容器中找一个类型和type一样的bean,找不到或者找到多个则报错。


4、如果没有指定参数,则默认找字段名称装配,找不到则按类型装配,找不到则报错。


@Autowired


默认按类型装配,找不到或者找到多个则报错。


如果要按名称装配,需要结合Spring另外一个注解Qualifier("name")使用。


默认必须装配requred=true,如果可以为空,可以设置为false,在Spring4+结合jdk8+的情况下还可以使用Optional和false同等的效果,如

@Autowired
private Optional<UserService> userService;

@Inject

和@Autowired类似,可以完全代替@Autowired,但这个没有required属性,要求bean必须存在。

如果要按名称装配,需要结合javax另外一个注解N("name")使用。

相关文章
51开发板同一程序实现数码管实现时钟显示、秒表计时。通过独立按键选择模式(时钟/秒表)、时间的重定义
51开发板同一程序实现数码管实现时钟显示、秒表计时。通过独立按键选择模式(时钟/秒表)、时间的重定义
627 3
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
1811 2
|
安全 Java Android开发
Kotlin为什么没有Java流行
Kotlin流行不起来的原因
565 1
|
分布式计算 监控 Hadoop
Hadoop任务执行失败
【7月更文挑战第12天】
806 10
|
物联网 定位技术 API
IoT 设备定位服务:GPS,移动基站、WiFi
IoT企业物联网平台提供基于GPS,移动基站、WiFi热点的定位服务
4542 1
IoT 设备定位服务:GPS,移动基站、WiFi
vue3 watch 监听多值以及深度监听用法
vue3 watch 监听多值以及深度监听用法
3186 0
|
消息中间件 Java 网络架构
在Spring Boot中实现微服务间的通信策略
在Spring Boot中实现微服务间的通信策略
|
XML Java 关系型数据库
springboot整合ssm详细讲解
springboot整合ssm详细讲解
783 1
|
存储 应用服务中间件 nginx
一文搞清楚 Docker 镜像、容器、仓库
Docker 镜像、容器、仓库是 Docker 技术中的三个重要概念.....
9133 1
一文搞清楚 Docker 镜像、容器、仓库

热门文章

最新文章