Spring 項目中使用 @Autowired 注入正常,改用 JSR-330 標準的 @Inject 則報錯「找不到符號」或注入失效。
@Inject 定義在 javax.inject 包中,不屬於 Spring 核心庫,需額外引入依賴:
<!-- Maven -->
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
或 Gradle:
implementation 'javax.inject:javax.inject:1'
| 特性 | @Autowired | @Inject |
|---|---|---|
| 來源 | Spring 專有 | JSR-330 標準 |
| required 屬性 | 支持 required=false | 無,強制要求存在 |
| 配合 @Qualifier | 支持 | 配合 @Named |
| 提供者 | Spring 容器 | 任何兼容 JSR-330 容器 |
@Autowired 功能更豐富。javax.inject 使用 @Inject + @Named。