Tengo un código de muestra que está utilizando fábricas. Me gustaría limpiar el código eliminando las fábricas y usando Guice. Intenté hacer esto pero di con un pequeño obstáculo. Soy realmente nuevo para Guice, así que espero que alguien pueda ayudarme aquí.Inyección de constructor usando Guice
vigente Código cliente (usando fábricas):
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();
}
}
Mi intento de refactorizar usando 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();
}
}
¿Cómo iba a construir una instancia de MailImpl
utilizando el objeto config
en mi ClienteDeCorreo revisada? ¿Debo usar Guice de esta manera?