当前位置: 首页 > 编程笔记 >

@Inject和@Autowired之间的区别

金兴朝
2023-03-14
本文向大家介绍@Inject和@Autowired之间的区别,包括了@Inject和@Autowired之间的区别的使用技巧和注意事项,需要的朋友参考一下

@Inject和@Autowired这两个注释都用于在应用程序中自动装配。

@Inject批注是Java 6中引入的Java CDI的一部分,而@Autowire批注是spring框架的一部分。因此,两个注释都实现相同的目的,我们可以在应用程序中使用其中的任何注释。

序号 @注入 @Autowired
1
基本的
它是Java CDI的一部分
它是Spring框架的一部分
2
需要
它没有必填属性
它具有必填属性
3
默认范围
自动装配的bean的默认范围是Singleton
注入bean的默认范围是原型
4
歧义性
如果要注入的bean含糊不清,则应在代码中添加@Named限定词。
如果注入用的豆类含糊不清,则应在代码中添加@Qualifer限定词。
5
优点
它是Java CDI的一部分,因此它不依赖于任何DI框架。它使您的系统松散耦合。
它使您的应用程序与Spring框架紧密结合。将来,如果您想转移到另一个DI框架,则需要重新配置您的应用程序。

@Injection注释的示例

public class InjectionExample {
   @Inject
   private CarBean carbean;
}

@Autowired注释的示例

public class AutowiredExample {
   @Autowired
   private CarBean carbean;
}
 类似资料:
  • 问题内容: 为什么在这种情况下不能使用? 但可以使用 生成同一事物的两种方式不是吗? 问题答案: 并做两件事。此处的其他答案将更详细地解释,但更为简单: 告诉Spring’这是此类的一个实例,请保留该类,并在我询问时将其还给我’。 说“请给我一个该类的实例,例如,我@Bean之前用注释创建的一个实例”。 那有意义吗?在第一个示例中,你要让Spring给你一个的实例,但是你从未创建一个实例,因此Sp

  • 问题内容: 因此,如果我理解正确的话,两种方法都是在有多个候选对象的情况下确定要自动装配哪个bean的方法。那么到底有什么区别呢? 问题答案: 读取为“默认”。 如果一个Bean 没有 任何Bean ,并且存在多个该类型的Bean,则将选择标记的候选Bean ,即,当没有其他可用信息(即丢失)时,它是默认选择。 一个好的用例是,最初您只有一个类型的bean,因此没有使用任何代码。然后,当您添加另一

  • 问题内容: @Inject和@Resource以及@Autowired注释有什么区别? 我们什么时候应该使用它们? 问题答案: 和注释@Inject和有什么区别?@Resource@Autowired 我们什么时候应该使用它们?@Inject与@Autowire与@Resource之间的区别? @Autowired:spring专有注释(与@Inject和@Resource相反),按类型(即,通过

  • 我发现了一个问题,当使用@Enable缓存批注与@Inject/@autoweld在@Configuration类: 复制的简单示例: 配置类: 应用程序上下文启动器: 错误: 引起原因:org.springframework.beans.factory.Bean定义存储异常:工厂方法[公共org.springframework.cache.CacheManagerspring.samples.c

  • 问题内容: 我错放了太多次了,我想我一直忘记,因为我不知道两者之间的区别,只是一个给了我我期望的价值,而另一个却没有。 为什么是这样? 问题答案: 是的简写形式(尽管请注意,该表达式只会被计算一次。) 是的,即指定一元的到。 例子:

  • 问题内容: 因此,我有一段简单的代码可以打印出整数1-10: 然后,如果仅在第3行上更改一个运算符,它将打印出无限数量的1整数(我知道为什么会这样做)。为什么在运行第二个程序时没有出现语法错误?如果赋值运算符后面跟着一个加法运算符,它不会调用语法错误吗? 问题答案: 与相同, 只是意味着。