Spring - 使用带有lookup-method的factory-bean类型

时间:2014-08-08 13:20:01

标签: java spring dependency-injection

Okie在Spring 3.1.4上运行了一些第三方代码,我无法改变它。此外,代码使用lookup-method在运行时动态注入类型。此类型是原型范围。所有这些都是基于lookup-method的服务对象创建的标准Spring使用。 问题是在3.1.4上由于DefaultSingletonBeanRegistry方法中的同步块,getSingleton上存在大量阻塞。线程转储显示当需要基于lookup-method的注入时执行路径到达那里并且卡在那里直到他们有时间运行。

我想知道我是否可以使用工厂bean来创建那些原型bean,而不是将它们定义为原型bean本身。在工厂bean的工厂方法中,我将使用基于new constructor_call()的方法来实例化值bean。并且在第三方cpring配置XML中保持factory-bean的bean id与原型bean相同。

这种方法有用吗?

1 个答案:

答案 0 :(得分:0)

  

并且还保持factory-bean的bean id与原型相同   bean在第三方cpring配置XML。

我不认为这会奏效。如果您有两个具有相同名称的bean(您定义的bean以及可能在第三方配置中定义的那个),您将获得例外。

但是,我认为您可以使用BeanDefinitionRegistryPostProcessorremove the prototype scoped bean并将其替换为您自己设计的bean。