我有一组FactoryBean
的实例,它们的类型为MyFactoryBean
。构造函数采用Class<?>
,并使用它来确定如何从getObject()
返回:如何以编程方式在Spring中注册FactoryBean的实例
public class MyFactoryBean implements FactoryBean {
private final Class<?> type;
public MyFactoryBean(Class<?> type) {
this.type = type;
}
@Override
public Object getObject() throws Exception {
return null; // Obviously I return something here rather than null!
}
@Override
public Class<?> getObjectType() {
return type;
}
@Override
public boolean isSingleton() {
return false;
}
}
我的最终结果是控制时,从上下文请求传递给MyFactoryBean
的构造类型的实例返回什么。
我可以用我的背景是这样他们注册:
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext();
context.getBeanFactory().registerSingleton(..., ...);
不过,这并不觉得不对劲,和自动装配不起作用。我如何将这些注册到我的上下文中?
编辑:的自动装配,我已经在这里指出的肖恩·帕特里克·弗洛伊德响应:How to get beans created by FactoryBean spring managed?但是这仍然没有回答我的问题。
我如何注册一个'AutowireCapableBeanFactory'用''AnnotationConfigApplicationContext? – Cheetah 2014-09-03 16:23:30
您应该创建将在Spring上下文中生存的bean,将'AutowireCapableBeanFactory'注入到其中并使用它以编程方式创建其他实例。如果您使用与我引用的代码类似的代码,则这些实例将自动装配。 – AlexR 2014-09-04 07:12:20