我找到了一種方法來做到這一點。這可能不是最好的辦法,所以如果你知道的更好,我仍然會看到答案。
問題是,活頁夾首先必須完全配置,因此它可以提供一個Config.class實例。
於是我想出了SessionFactory.class定製的提供者,需要一個配置和的吉斯噴油器本身,所以,當所有的信息已經被吉斯咕嚕咕嚕,它有辦法提供基於不同的實現在配置上。
public class SessionFactoryProvider implements Provider<SessionFactory> {
private Config config;
private Injector injector;
@Inject
public SessionFactoryProvider(Config config, Injector injector) {
this.config = config;
this.injector = injector;
}
@Override
public SessionFactory get() {
switch (config.database.type) {
case postgresql:
return injector.getInstance(PostgresqlSessionFactoryProvider.class).get();
case mysql:
return injector.getInstance(MysqlSessionFactoryProvider.class).get();
case file:
return injector.getInstance(FileBasedSessionFactoryProvider.class).get();
/* some more providers... */
default:
return injector.getInstance(FileBasedSessionFactoryProvider.class).get();
}
}
}
您怎麼看?這是做這件事的好方法嗎?
好吧。如果沒有人知道,或者沒有人關心,我必須接受我自己的答案...... – kungfoo 2009-12-08 08:42:08