我需要定义一个自定义范围,其中给定一个构造函数参数,当arg相同时,使用相同的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");
&#34;一个&#34;和&#34; bar&#34;应该是同一个实例,&#34;两个&#34;另一个例子。
其他解决方案声明使用FactoryBean类。但我需要一个自定义范围。
任何解决方案?