@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; }
广告