public interface MessageService {
void sendMessage(String message);
}
public class EmailService implements MessageService {
@Override
public void sendMessage(String message) {
System.out.println("Email service: " + message);
}
}
public class Client {
@Inject
private MessageService messageService;
public void sendMessage(String message) {
messageService.sendMessage(message);
}
}
public class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(MessageService.class).to(EmailService.class);
}
}
public class Main {
public static void main(String[] args) {
Injector injector = Guice.createInjector(new MyModule());
Client client = injector.getInstance(Client.class);
client.sendMessage("Hello Guice!");
}
}