自定义Spring作用域基于构造函数args

时间:2017-08-10 12:19:20

标签: java spring

我需要定义一个自定义范围,其中给定一个构造函数参数,当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类。但我需要一个自定义范围。

任何解决方案?

0 个答案:

没有答案