通過 XML 配置自動連線依賴項

使用 Spring 框架的元件掃描功能時,可以自動連線依賴關係。要使自動裝配工作,必須進行以下 XML 配置:

<context:annotation-config/>
<context:component-scan base-package="[base package]"/>

其中,base-package 是 Spring 應該執行元件掃描的完全限定的 Java 包。

建構函式注入

可以通過類建構函式注入依賴項,如下所示:

@Component
class Bar { ... }

@Component
class Foo {
  private Bar bar;

  @Autowired
  public Foo(Bar bar) { this.bar = bar; }
}

這裡,@Autowired 是一個特定於 Spring 的註釋。Spring 還支援 JSR-299, 以實現對其他基於 Java 的依賴注入框架的應用程式可移植性。這樣可以將 @Autowired 替換為 @Inject,如下所示:

@Component
class Foo {
  private Bar bar;

  @Inject
  public Foo(Bar bar) { this.bar = bar; }
}

屬性注入

也可以使用 setter 方法注入依賴關係,如下所示:

@Component
class Foo {
  private Bar bar;

  @Autowired
  public void setBar(Bar bar) { this.bar = bar; }
}

現場注入

自動裝配還允許直接在類例項中初始化欄位,如下所示:

@Component
class Foo {
  @Autowired
  private Bar bar;
}

對於 Spring 版本 4.1+,你可以使用 Optional 作為可選依賴項。

@Component
class Foo {

    @Autowired
    private Optional<Bar> bar;
}

相同的方法可用於建構函式 DI。

@Component
class Foo {
    private Optional<Bar> bar;

    @Autowired
    Foo(Optional<Bar> bar) {
        this.bar = bar;
    }
}