`

@Inject和@Autowired以及@Resource区别

阅读更多
@value 注解配置默认值
但是,如果配置文件中没有设置 name的值, spring在启动的时候会报错。这时需要给name配置默认值,代码如下:
引用
@Value("${name:bob}")
private String name;

参考:https://blog.csdn.net/wsjzzcbq/article/details/82389831


Spring中的@DependsOn注解
引用

作用:
  用于指定某个类的创建依赖的bean对象先创建。spring中没有特定bean的加载顺序,使用此注解则可指定bean的加载顺序。(在基于注解配置中,是按照类中方法的书写顺序决定的)
属性:
  value:
    用于指定bean的唯一标识。被指定的bean会在当前bean创建之前加载。
使用场景:
   在观察者模式中,分为事件,事件源和监听器。一般情况下,我们的监听器负责监听事件源,当事件源触发了事件之后,监听器就要捕获,并且做出相应的处理。以此为前提,我们肯定希望监听器的创建时间在事件源之前,此时就可以使用此注解。


参考:https://blog.csdn.net/qq_29860591/article/details/108634575


Spring对于Bean的依赖注入,支持多种注解方式:
@Resource javax.annotationJSR250 (Common Annotations for Java) 
@Inject javax.injectJSR330(Dependency Injection for Java)
@Autowired org.springframework.bean.factory Spring


直观上看起来,@Autowired是Spring提供的注解,其他几个都是JDK本身内建的注解,Spring对这些注解也进行了支持。但是使用起来这三者到底有什么区别呢?笔者经过方法的测试,发现一些有意思的特性

区别总结如下:
一、@Autowired有个required属性
可以配置为false,这种情况下如果没有找到对应的bean是不会抛异常的。@Inject和@Resource没有提供对应的配置,所以必须找到否则会抛异常

二、 @Autowired和@Inject基本是一样的
因为两者都是使用AutowiredAnnotationBeanPostProcessor来处理依赖注入
但是@Resource是个例外,它使用的是CommonAnnotationBeanPostProcessor来处理依赖注入。
当然,两者都是BeanPostProcessor
引用
@Autowired和@Inject- 默认 autowired by type,可以 通过@Qualifier 显式指定 autowired by qualifier name
如果 autowired by type 失败(找不到或者找到多个实现),则退化为autowired by field name
@Resource- 默认 autowired by field name- 如果 autowired by field name失败,会退化为 autowired by type- 可以 通过@Qualifier 显式指定 autowired by qualifier name- 如果 autowired by qualifier name失败,会退化为 autowired by field name。但是这时候如果 autowired by field name失败,就不会再退化为autowired by type了。


https://zhidao.baidu.com/question/1306705027383695379.html

从头认识Spring-2.4 基于java的标准注解装配-@Inject(3)-通过构造器方法注入
http://blog.csdn.net/raylee2007/article/details/50670490

深入理解spring中的各种注解
http://www.cnblogs.com/digdeep/p/4525567.html

@Inject和@Autowired以及@Resource区别
http://blog.csdn.net/u012734441/article/details/51706504

@Autowired与@Resource的区别

http://blog.csdn.net/ssyan/article/details/6771568

@ResponseBody 和 @RequestBody 注解的区别
http://blog.csdn.net/qq_35246620/article/details/59620858
分享到:
评论

相关推荐

    详解Spring依赖注入:@Autowired,@Resource和@Inject区别与实现原理

    Spring 依赖注入:@Autowired,@Resource 和@Inject 区别与实现原理 Spring 依赖注入是指在应用程序中将对象之间的依赖关系自动装配的过程。Spring 框架提供了多种依赖注入方式,包括 @Autowired、@Resource 和@...

    Java-Spring各种依赖注入注解的区别.doc

    总结来说,@Autowired、@Inject和@Resource都是Spring进行依赖注入的手段,它们的主要区别在于默认匹配策略、异常处理和是否支持字段名匹配。选择哪种注解取决于具体需求,如是否需要灵活性、是否要求必须存在依赖...

    学习Spring笔记_Annotation(注解)_Autowired_Qualifier

    除了`@Autowired`,Spring框架还提供了其他的依赖注入注解,如`@Resource`(主要用于JSR-250规范,基于名称的注入)和`@Inject`(JSR-330规范,基于类型和名称的注入)。这些注解在不同的场景下有不同的优势,开发者...

    如何完成spring的最小化XML配置

    然而,随着框架的发展,为了简化配置,Spring引入了最小化XML配置的概念,以及注解装配的方式,使得配置更加简洁和高效。本文将深入探讨如何实现Spring的最小化XML配置。 一、自动装配 1. 四种类型的自动装配 - ...

    spring-autowire.zip

    当在某个字段或方法上添加了@Autowired,Spring容器会自动寻找合适的bean进行注入,而无需手动使用`@Resource`或`@Inject`来指定bean的名称。 在IDEA 2020中创建Spring项目并引入Spring Web依赖,我们可以创建几个...

    dependency-injection-spring:Spring依赖注入的最简单示例

    没有XML的Spring Dependency Injection示例 最简单的示例Spring ...批注@ Inject,@ Resource和@Autowired之间的区别 更多演示 Java EE World示例可在以下位置找到: : 可以在这里找到Spring Wordl示例: :

    spring注解实现注入.zip

    在Spring框架中,注解注入是一种非常常用且强大的依赖注入(Dependency Injection,简称DI)...同时,结合组件扫描、配置类以及各种作用域和环境注解,Spring为开发者提供了丰富的工具来构建松散耦合、易于测试的系统。

    关于spring boot中几种注入方法的一些个人看法

    @Autowired 的工作原理是,在启动 Spring IoC 时,容器自动装载了一个 AutowiredAnnotationBeanPostProcessor 后置处理器,当容器扫描到 @Autowired、@Resource 或 @Inject 时,就会在 IoC 容器自动查找需要的 bean...

    Spring+SpringMVC+MyBatis+easyUI整合

    5. `@Inject` 和 `@Autowired`:两者都实现了依赖注入,但`@Inject`遵循JSR-330规范,而`@Autowired`是Spring特有的。它们都可以通过`AutowiredAnnotationBeanPostProcessor`进行处理,但在处理依赖注入时,`@...

    Spring依赖注入——java项目中使用spring注解方式进行注入.rar

    2. 注解注入:在需要注入依赖的类中,使用`@Autowired`、`@Qualifier`、`@Resource`或`@Inject`等注解标记字段或方法。 3. 配置扫描:在Spring配置文件中,使用`<context:component-scan>`标签指定需要扫描的包,使...

    (转)Spring 3.0 注解注入详解

    主要的注解包括`@Autowired`、`@Qualifier`、`@Required`和`@Value`等。 1. **@Autowired**:这是Spring最常用的注解,用于自动装配bean。它可以根据类型、名称或属性的类型来查找并注入相应的bean。默认情况下,...

    02.Spring组件及aop基本使用操作1

    接着,我们来谈谈`@Autowired`,`@Resource`和`@Inject`的区别。这三种注解都用于实现依赖注入,但各有侧重: - `@Autowired`:Spring默认按类型匹配bean进行自动装配,如果存在多个候选bean,可以通过`@Qualifier`...

    bean_lifecycle.zip

    本篇文章将深入探讨Spring Bean的生命周期注解以及不同Bean注入注解之间的区别。 一、Bean的生命周期注解 1. `@PostConstruct`:此注解用于标记一个方法,该方法将在Bean初始化完成后,但在任何依赖注入之前执行。...

    autowiring-benchmark:SPR-13086 的基准应用程序

    模式 5 @Resource (byName) 如何测量 运行脚本。 $ sh run.sh N 这个基准测试应用程序有 N 个Controller s、 Service s、 ServiceImpl s 和每个模式的一个Main端点。 当 N=100 时,会生成 (100 + 100 + 100 + 1) ...

    Spring常用注解(收藏大全).docx

    Spring 提供了多种依赖注入方式,例如 `@Autowired`、`@Inject` 和 `@Resource`。 * `@Autowired`:由 Spring 提供,用于依赖注入。 * `@Inject`:由 JSR-330 提供,用于依赖注入。 * `@Resource`:由 JSR-250 提供...

    spring注解方式解析

    在Spring中,我们可以使用注解如`@Inject`、`@Resource`、`@Autowired`以及构造函数、setter方法、field级别的注解来实现依赖注入。例如: ```java @Component public class UserRepository { private ...

    跟我学Spring3(3.3)更多的DI知识Java开发J

    - **@Resource**:与`@Autowired`类似,但`@Resource`默认按照Bean的名称进行匹配,而`@Autowired`则是按类型匹配。 - **@Inject**:JSR 330标准提供的注解,Spring 3.3开始支持,同样可以用于依赖注入。 - **@...

    Spring在代码中获取bean的几种方式.rar

    Bean是由Spring容器创建、初始化、装配以及管理的对象,开发者可以通过多种方式在代码中获取这些Bean。以下将详细介绍Spring在代码中获取bean的几种主要方法: 1. **`ApplicationContext` 接口** `...

    Spring限定器demo

    此外,`@Qualifier`可以与`@Resource`、`@Inject`和`@Autowired`一起使用,但`@Qualifier`通常用于更复杂的场景,例如当`@Autowired`不能唯一确定bean时。`@Resource`注解默认是通过bean的名字来查找,所以有时可以...

    Spring 自动装配及其注解

    3. **@Resource**:这是JSR-250规范提供的注解,功能与`@Autowired`类似,但默认是按名称进行匹配。如果名称不明确,它也会尝试按类型匹配。 4. **@Inject**:也是JSR-250的一部分,功能与`@Autowired`相似,但没有`...

Global site tag (gtag.js) - Google Analytics