diff --git a/dependency-injection/pom.xml b/dependency-injection/pom.xml
index 3062f724c..ae26745f7 100644
--- a/dependency-injection/pom.xml
+++ b/dependency-injection/pom.xml
@@ -14,5 +14,10 @@
junit
test
+
+ com.google.inject
+ guice
+ 4.0
+
diff --git a/dependency-injection/src/main/java/com/iluwatar/App.java b/dependency-injection/src/main/java/com/iluwatar/App.java
index fc5a4d67d..d2ad6eab2 100644
--- a/dependency-injection/src/main/java/com/iluwatar/App.java
+++ b/dependency-injection/src/main/java/com/iluwatar/App.java
@@ -1,5 +1,8 @@
package com.iluwatar;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
public class App {
public static void main( String[] args ) {
@@ -8,5 +11,9 @@ public class App {
AdvancedWizard advancedWizard = new AdvancedWizard(new SecondBreakfastTobacco());
advancedWizard.smoke();
+
+ Injector injector = Guice.createInjector(new TobaccoModule());
+ GuiceWizard guiceWizard = injector.getInstance(GuiceWizard.class);
+ guiceWizard.smoke();
}
}
diff --git a/dependency-injection/src/main/java/com/iluwatar/GuiceWizard.java b/dependency-injection/src/main/java/com/iluwatar/GuiceWizard.java
new file mode 100644
index 000000000..cc0c559cd
--- /dev/null
+++ b/dependency-injection/src/main/java/com/iluwatar/GuiceWizard.java
@@ -0,0 +1,18 @@
+package com.iluwatar;
+
+import javax.inject.Inject;
+
+public class GuiceWizard implements Wizard {
+
+ private Tobacco tobacco;
+
+ @Inject
+ public GuiceWizard(Tobacco tobacco) {
+ this.tobacco = tobacco;
+ }
+
+ @Override
+ public void smoke() {
+ tobacco.smoke(this);
+ }
+}
diff --git a/dependency-injection/src/main/java/com/iluwatar/RivendellTobacco.java b/dependency-injection/src/main/java/com/iluwatar/RivendellTobacco.java
new file mode 100644
index 000000000..a37c7a7fe
--- /dev/null
+++ b/dependency-injection/src/main/java/com/iluwatar/RivendellTobacco.java
@@ -0,0 +1,4 @@
+package com.iluwatar;
+
+public class RivendellTobacco extends Tobacco {
+}
diff --git a/dependency-injection/src/main/java/com/iluwatar/TobaccoModule.java b/dependency-injection/src/main/java/com/iluwatar/TobaccoModule.java
new file mode 100644
index 000000000..c5b07bb59
--- /dev/null
+++ b/dependency-injection/src/main/java/com/iluwatar/TobaccoModule.java
@@ -0,0 +1,11 @@
+package com.iluwatar;
+
+import com.google.inject.AbstractModule;
+
+public class TobaccoModule extends AbstractModule {
+
+ @Override
+ protected void configure() {
+ bind(Tobacco.class).to(RivendellTobacco.class);
+ }
+}