【发布时间】:2011-04-24 02:36:14
【问题描述】:
我很感兴趣,有什么方法可以用已经创建的对象初始化依赖项?
假设我有以下课程:
class MyPage {
@Autowired LogStorage storage;
private String applicationId;
private Date date;
public MyPage(String applicationId, Date date) {
this.applicationId = applicationId;
this.date = date;
}
public String render() {
Collection<Entry> entries = storage.getEntries(applicationId, date);
// render entries into HTML for example
}
}
我想将对象创建分为两个阶段。首先,使用用户提供的数据创建对象(在此示例中为applicationId 和date),第二个是使用 Spring DI 容器依赖项初始化对象。所以我需要某种初始化已经创建的对象。我认为客户端代码应该是这样的:
MyPage p = new MyPage(applicationId, date);
beanFactory.initDependencies(p);
String html = p.render();
客户端不知道(在我的情况下也不应该)Page 对象所需的所有依赖项,因此我无法明确提供依赖项。但是我参考了BeanFactory 对象并且可以将此任务委托给Spring。有什么办法吗?
【问题讨论】: