@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框架,则需要重新配置您的应用程序。 |
public class InjectionExample { @Inject private CarBean carbean; }
public class AutowiredExample { @Autowired private CarBean carbean; }