@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")使用。

相关文章
|
6月前
|
Java Spring 容器
@Resource 和 @Autowired区别是什么?
@Resource 和 @Autowired区别是什么?
|
6月前
|
Java Spring 容器
同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
同一接口有多个实现类,怎么来注入一个指定的实现?@Resource、@Autowired、@Qualifier
285 0
|
6月前
|
Java Spring 容器
@Resource注解是什么作用,和@bean区别是什么?
@Resource注解是什么作用,和@bean区别是什么?
185 0
|
6月前
|
Java Spring
spring注解@Autowired、@Resource说明
spring注解@Autowired、@Resource说明
|
6月前
|
Java 数据库连接 API
SpringBoot【问题 01】借助@PostConstruct解决使用@Component注解的类用@Resource注入Mapper接口为null的问题(原因解析+解决方法)
SpringBoot【问题 01】借助@PostConstruct解决使用@Component注解的类用@Resource注入Mapper接口为null的问题(原因解析+解决方法)
717 0
|
Java Spring
【Java注解用法】@Autowired 与@Resource的区别以及@Qualifier的介绍
【Java注解用法】@Autowired 与@Resource的区别以及@Qualifier的介绍
89 0
|
Java 编译器 Spring
Spring框架@Autowired和@Resource到底有什么区别
Spring框架@Autowired和@Resource到底有什么区别
518 0
|
开发框架 SpringCloudAlibaba Java
Spring注解装配:@Autowired和@Resource使用及原理详解
`@Resource`和`@Autowired`都是实现bean的注入,在日常开发中使用非常频繁,但是使用体验不太一样,笔者喜欢用`@Resource`,因为在使用`@Autowired`时IDEA会出现一些警告爆红提示
342 0
Spring注解装配:@Autowired和@Resource使用及原理详解
|
Java Spring
解析Spring注解:@Resource与@Autowired的区别
在Spring框架中,依赖注入是实现松耦合、可维护性高的应用的重要方式之一。`@Resource`和`@Autowired`是两个常用的注解,用于实现依赖注入。然而,它们在用法和特点上有所不同。本文将详细介绍`@Resource`和`@Autowired`之间的区别,以及在Spring应用中的应用场景。
304 0
|
Java Spring 容器
@Inject和@Autowired的区别
@Inject和@Autowired的区别