2015-10-14 68 views

回答

2

Provider<T>是JSR-330接口,其是由CDI接口Instance<T>延长。

注入MyBean,当没有匹配的bean或多个匹配的bean时,您的应用程序将在启动过程中抛出异常。

注射Instance<MyBean>,豆分辨率被委派到应用程序:您可以遍历所有候选豆类和select()一个你想要的,或致电isUnsatisfied()并决定何时没有匹配的bean做什么。

对于@Dependent范围豆,调用Instance.get()将创建一个新实例每次调用,你应该调用Instance.destroy(t)为每个这样的情况下,当你不再需要它。

Provider只是有get()方法,但没有destroy()select()并且不支持迭代。在CDI环境中,对于由Provider<T>解决的任何用例,最好使用Instance<T>

相关问题