https://jakarta.ee/specifications/platform/9/apidocs/jakarta/inject/provider
Provider<T>
接口提供T的实例,通常被一个注入器(injector)实现。对于任何可以被注入的类型T,同样也可以注入Provider<T>
。跟直接注入T相比,注入Provider<T>
有下面的好处:
- 可以获取多个实例。
- 可以懒获取或者可选地获取(lazy or optional retrieval)一个实例。
- 打破循环依赖。
例如:
class Car {
@Inject Car(Provider<Seat> seatProvider) {
Seat driver = seatProvider.get();
Seat passenger = seatProvider.get();
...
}
}