何时在Spring中使用javax.inject.Provider?

它的作用非常简单:

@Inject

private Provider<ProductService> productService;

产品服务可通过以下服务获得productService.get().get()并将在每次调用时从Spring上下文解析实例。

但是我什么时候应该使用它?在哪里

我的主要用例非常简单:当我获得循环依赖关系时,提供程序将在运行时帮助解决依赖关系。但是,如果只是在由于循环依赖而无法创建上下文的情况下将其丢弃,则它看起来有些随机。

关于提供者的使用是否存在任何已知模式?

回答:

该接口与寻找原型实例时org.springframework.beans.factory.ObjectFactory<T>通常用于避免BeanFactory.getBean()在客户端代码中调用的接口等效。通常用于ObjectFactoryCreatingFactoryBean获取由来源的Bean原型BeanFactory

来自ObjectFactoryCreatingFactoryBeanjavadocs的示例:

<beans>

<!-- Prototype bean since we have state -->

<bean id="myService" class="a.b.c.MyService" scope="prototype"/>

<bean id="myServiceFactory"

class="org.springframework.beans.factory.config.ObjectFactoryCreatingFactoryBean">

<property name="targetBeanName"><idref local="myService"/></property>

</bean>

<bean id="clientBean" class="a.b.c.MyClientBean">

<property name="myServiceFactory" ref="myServiceFactory"/>

</bean>

</beans>

使用Providers,您可以ProviderCreatingFactoryBean改用。

解决相同问题的另一个选择(使用继承代替合成)是

查找方法注入

以上是 何时在Spring中使用javax.inject.Provider? 的全部内容, 来源链接: utcz.com/qa/423769.html

回到顶部