可以aop:scoped-proxy与通用工厂bean一起使用吗?

时间:2015-09-04 23:49:36

标签: java spring

我构建了一个AbstractFactoryBean实现,它适用于泛型类型,例如:

public class MyClass<T> extends AbstractFactoryBean<T> {

Class<T> type; // this is injected as a parameter when the factory is used

@Override
protected Class<?> getObjectType() {
    return type;
}

@Override
protected T createInstance() {
    // some logic to create object of type T
    return (T) someObjectResult;
}

这可以很好地创建任何不同类型的bean。例如:

<bean id="whateverBean" class="MyClass" p:type="WhateverBeanClass" />

但是,当我尝试使用它创建一个bean时,

<bean id="whateverBean" class="MyClass" p:type="WhateverBeanClass" >
    <aop:scoped-proxy/>
</bean>

失败并显示错误由以下引起:java.lang.IllegalStateException:无法为bean创建作用域代理&scansTarget.whateverBean&#39;:在创建代理时无法确定目标类型。

基于阅读,看起来scoped-proxy似乎必须知道类型是什么,甚至在对象完全初始化之前。例如,当发生这种情况时(试图调试问题),我似乎无法在getObjectType()方法中打印或记录任何内容。

这有什么办法吗?我如何使用工厂创建范围代理,该工厂将知道它在运行时创建的bean的类型,但不是&#34;运行前&#34;这是什么时候发生的?

0 个答案:

没有答案