何时应使用实例<T>和提供者<T>在 CDI 中注入豆类?
2022-09-04 21:37:31
Provider<T>
是一个 JSR-330 接口,它由 CDI 接口扩展。Instance<T>
注入 ,当没有匹配的 Bean 或多个匹配的 Bean 时,您的应用程序将在启动期间引发异常。MyBean
注入 ,将 bean 解析委托给应用程序:您可以迭代所有候选 Bean 以及您想要或调用的 bean,并决定在没有匹配的 Bean 时要执行的操作。Instance<MyBean>
select()
isUnsatisfied()
对于具有作用域的 Bean,调用将为每个调用创建一个新实例,并且当您不再需要它时,应为每个此类实例调用。@Dependent
Instance.get()
Instance.destroy(t)
Provider
只是有方法,但没有或不支持迭代。在 CDI 环境中,对于 解决的任何用例,您最好改用 。get()
destroy()
select()
Provider<T>
Instance<T>