功能: 该接口是一个简单的引导上下文,在启动和 Environment 后处理期间可用,直到准备好ApplicationContext为止。提供对单例的延迟访问,这些单例的创建成本可能很高,或者在ApplicationContext可用之前需要共享。
该接口定义了以下几个方法:
// 如果类型已注册,则从上下文返回实例。如果以前没有访问过该实例,则将创建该实例。
<T> T get(Class<T> type) throws IllegalStateException;
// 如果类型已注册,则从上下文返回实例。如果以前没有访问过该实例,则将创建该实例。如果类型没有被注册,则创建一个该类型的其他实例。
<T> T getOrElse(Class<T> type, T other);
// 如果类型已注册,则从上下文返回实例。如果以前没有访问过该实例,则将创建该实例。如果类型没注册返回提供的该类型的其他实例。
<T> T getOrElseSupply(Class<T> type, Supplier<T> other);
// 如果类型已注册,则从上下文返回实例。如果以前没有访问过该实例,则将创建该实例。如果类型没有注册则抛出异常。
<T, X extends Throwable> T getOrElseThrow(Class<T> type, Supplier<? extends X> exceptionSupplier) throws X;
//如果给定类型存在注册,则返回true,否则返回false
<T> boolean isRegistered(Class<T> type);