Jor*_*lan 6 java dependency-injection guice
我有一些使用工厂的示例代码.我想通过删除工厂来清理代码并使用Guice代替.我试图这样做,但我遇到了一个小障碍.我对Guice很新,所以我希望有人可以帮助我.
现有客户端代码(使用工厂):
public class MailClient {
public static void main(String[] args) {
MailConfig config = MailConfigFactory.get();
config.setHost("smtp.gmail.com");
Mail mail = MailFactory.get(config);
mail.send();
}
}
Run Code Online (Sandbox Code Playgroud)
我试图使用Guice进行重构:
//Replaces existing factories
public class MailModule extends AbstractModule {
@Override
protected void configure() {
bind(Mail.class)
.to(MailImpl.class);
bind(MailConfig.class)
.to(MailConfigImpl.class);
}
}
public class MailImpl implements Mail {
private final MailConfig config;
@Inject
public MailImpl(MailConfig config) {
this.config = config;
}
public void send() { ... }
}
public class MailClient {
public static void main(String[] args) {
MailModule mailModule = new MailModule();
Injector injector = Guice.createInjector(mailModule);
MailConfig config = injector.getInstance(MailConfig.class);
config.setHost("smtp.gmail.com");
Mail mail = //??
mail.send();
}
}
Run Code Online (Sandbox Code Playgroud)
如何构建在我修订的MailClient 中MailImpl使用该对象的实例config?我应该以这种方式使用Guice吗?
| 归档时间: |
|
| 查看次数: |
10854 次 |
| 最近记录: |