我正在尋找一種強制某些Guice綁定僅作爲提供者注入的方法。例如,當有喜歡Guice:強制綁定作爲提供者注入
interface ResultLogger {
void log(String resultAsString);
}
class ResultLoggerProvider implements Provider<ResultLogger> {
// ...
}
class ResultDisplayModule extends AbstractModule {
@Override
protected void configure() {
bind(ResultLogger.class).toProvider(ResultLoggerProvider.class);
}
}
的配置我想有辦法來配置我的模塊,使像
@Singleton
class ResultParser {
private final Provider<ResultLogger> loggerProvider;
@Inject
public ResultParser(Provider<ResultLogger> loggerProvider) {
this.loggerProvider = loggerProvider;
}
}
一類可以注射就好了,但像
實現@Singleton
class ResultParser {
private final ResultLogger resultLogger;
@Inject
public ResultParser(ResultLogger resultLogger) {
this.resultLogger = resultLogger;
}
}
應拋出一個RuntimeException,通知開發人員ResultLogger
只能通過提供者使用。最理想的例外情況是儘快拋出,例如在噴射器的建造期間。我正在尋找一種簡單的方法來使用Guice 3.0中的現有API來實現這一點。
這似乎是我的問題最合理的解決方案。我想通過嘗試使用Guice Provider類和API,我想「太過於」了。謝謝! – ddso