3

春の豆のファクトリクラスを作成しようとしていました

public interface MyBean implements TBean{}

@Component
@Scope("prototype")
public class MyBeanImpl implements MyBean{
   public MyBeanImpl(Request request){//..}
}

@Component
public class MyFactory {
    public <T extends TBean> T createbean(Class<T> interfaceToCreate, Object... args) {
        return (T)AppContext.getApplicationContext().getBean(interfaceToCreate, args);
    }
}

メソッドはApplicationContextオブジェクトをAppContext.getApplicationContext()返します

ここで、次のような春のBeanを作成できるはずです。

@Autowired
protected MyFactory factory;

Request myRequest;
void somemethod(){
    factory.createbean(MyBean.class, myRequest)
}

しかし、BeanFactory は次のようなメソッドを公開していません:そして私はクラスgetBean(Class<T> clazz, Object... args)のデフォルトコンストラクターを持っていませんMyBeanImpl

誰かがそれを達成する方法を知っていますか?

4

1 に答える 1

1

あなたは2つのステップでそれを達成することができます。はListableBeanFactoryメソッドを提供しますString[] getBeanNamesForType(Class<?> type)。タイプのBean名を取得したら、を呼び出すことができますBeanFactory.getBean(String name, Object... args)

于 2012-10-23T20:37:05.530 に答える