@Inject 和 @Autowired 的区别


@Inject 和 @Autowired 注解都用于应用程序中的自动装配。

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

序号关键点@Inject@Autowired
1
基础
它是 Java CDI 的一部分
它是 Spring 框架的一部分
2
必需
它没有required属性
它有 required 属性
3
默认范围
自动装配 bean 的默认范围是单例
注入 bean 的默认范围是原型
4
歧义
如果 bean 注入存在歧义,则应在代码中添加 @Named 限定符。
如果 bean 注入存在歧义,则应在代码中添加 @Qualifier 限定符。
5
优势
它是 Java CDI 的一部分,因此它不依赖于任何 DI 框架。它使您的系统松散耦合。
它使您的应用程序与 Spring 框架紧密耦合。将来,如果您想迁移到另一个 DI 框架,则需要重新配置您的应用程序。

@Injection 注解示例

public class InjectionExample {
   @Inject
   private CarBean carbean;
}

@Autowired 注解示例

public class AutowiredExample {
   @Autowired
   private CarBean carbean;
}

更新于:2020年9月9日

8K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告