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