public interface MessageService {
void sendMessage(String message);
}
public class EmailService implements MessageService {
@Override
public void sendMessage(String message) {
System.out.println("Sending email: " + message);
}
}
public class MyApplication {
@Inject
private MessageService messageService;
public void processMessage(String message) {
messageService.sendMessage(message);
}
}
public class GuiceModule 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 GuiceModule());
MyApplication app = injector.getInstance(MyApplication.class);
app.processMessage("Hello World!");
}
}