Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java aop:作用域代理可以与通用工厂bean一起使用吗?_Java_Spring - Fatal编程技术网

Java aop:作用域代理可以与通用工厂bean一起使用吗?

Java aop:作用域代理可以与通用工厂bean一起使用吗?,java,spring,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() {

我构建了一个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;
}
公共类MyClass扩展了AbstractFactoryBean{
类类型;//在使用工厂时作为参数注入
@凌驾
受保护的类getObjectType(){
返回类型;
}
@凌驾
受保护的T createInstance(){
//创建T类型对象的一些逻辑
返回(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“scopedTarget.whateverBean”创建作用域代理:在创建代理时无法确定目标类型

基于读取,似乎作用域代理必须知道类型是什么,甚至在对象完全初始化之前也是如此。例如,发生这种情况时(试图调试问题时),我似乎无法在getObjectType()方法中打印或记录任何内容

有什么办法可以解决这个问题吗?我如何使用一个工厂来创建作用域代理,该工厂将知道它在运行时创建的bean的类型,而不是“预运行时”,它似乎正在发生这种情况