Okie在Spring 3.1.4上运行了一些第三方代码,我不能改变这一点。此外,代码使用lookup-method在运行时动态注入类型。此类型属于原型作用域。All是基于lookup-method的服务对象创建的标准Spring用法。问题是,在3.1.4中,由于getSingleton方法中的synchronized块,DefaultSingletonBeanRegistry上有很多阻塞。线程转储显示,当需要基于lookup-method的注入时,执行路径会到达那里,并一直停留在那里,直到它们有时间运行。
我想知道是否可以使用工厂bean来创建这些原型bean,而不是将它们定义为原型bean本身。在工厂bean的工厂方法中,我将使用基于new constructor_call()的方法来实例化值bean。并且还保持factory-bean的bean id与第三方配置XML中的原型bean相同。
这种方法行得通吗?
发布于 2014-08-09 04:11:57
并保持工厂bean的bean id与第三方配置
中的原型bean相同。
我不认为这是可行的。如果您有两个具有相同名称的bean(您定义的bean加上可能在第三方的配置中定义的bean),您将得到一个异常。
但是,我认为您可以使用BeanDefinitionRegistryPostProcessor来remove the prototype scoped bean,并将其替换为您自己设计的bean。
https://stackoverflow.com/questions/25204492
复制相似问题