Java 基于构造函数参数的自定义Spring范围
我需要定义一个自定义范围,其中给定一个构造函数参数,当参数相同时使用相同的bean实例 但是,objectFactory参数不允许访问构造函数参数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)
@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类。但我需要一个自定义范围
有解决办法吗