通過 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;
}
}