Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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 基于构造函数参数的自定义Spring范围_Java_Spring - Fatal编程技术网

Java 基于构造函数参数的自定义Spring范围

Java 基于构造函数参数的自定义Spring范围,java,spring,Java,Spring,我需要定义一个自定义范围,其中给定一个构造函数参数,当参数相同时使用相同的bean实例 但是,objectFactory参数不允许访问构造函数参数 @Override public Object get(String name, ObjectFactory<?> objectFactory) { // This method doesn't exists. It's what I need String arg = (String)

我需要定义一个自定义范围,其中给定一个构造函数参数,当参数相同时使用相同的bean实例

但是,objectFactory参数不允许访问构造函数参数

    @Override
    public Object get(String name, ObjectFactory<?> objectFactory) {

        // This method doesn't exists. It's what I need
        String arg = (String) objectFactory.getArg(1);

        if (!mScopedObjects.containsKey(arg)) {

            mScopedObjects.put(arg, objectFactory.getObject());
        }

        return mScopedObjects.get(arg);
    }


//Configuration
@Bean
@Scope("myscope")
public Foo getFoo(String fooId) {

    return new Foo(fooId);
}

//Somewhere in the project
Foo one = context.getBean(Foo.class, "one");
Foo two = context.getBean(Foo.class, "two");
Foo bar = context.getBean(Foo.class, "one");
@覆盖
公共对象获取(字符串名称,ObjectFactory ObjectFactory){
//这个方法不存在,这是我需要的
字符串arg=(字符串)objectFactory.getArg(1);
如果(!mScopedObjects.containsKey(arg)){
mScopedObjects.put(arg,objectFactory.getObject());
}
返回mScopedObjects.get(arg);
}
//配置
@豆子
@范围(“myscope”)
公共Foo getFoo(字符串fooId){
返回新的Foo(fooId);
}
//项目中的某个地方
fooone=context.getBean(Foo.class,“one”);
footwo=context.getBean(Foo.class,“two”);
foobar=context.getBean(Foo.class,“one”);
“一”和“条”应该是同一个实例,“二”应该是另一个实例

其他解决方案声明使用FactoryBean类。但我需要一个自定义范围

有解决办法吗