diff --git a/injecting-beans/pom.xml b/injecting-beans/pom.xml
new file mode 100644
index 0000000000..db3d4c4c20
--- /dev/null
+++ b/injecting-beans/pom.xml
@@ -0,0 +1,32 @@
+
+ 4.0.0
+ com.baeldung.common
+ SpringExample
+ jar
+ 1.0-SNAPSHOT
+ SpringExample
+ http://maven.apache.org
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+
+ org.springframework
+ spring-core
+ 4.1.4.RELEASE
+
+
+ org.springframework
+ spring-context
+ 4.1.4.RELEASE
+
+
+
+
diff --git a/injecting-beans/src/main/java/com/baeldung/App.java b/injecting-beans/src/main/java/com/baeldung/App.java
new file mode 100644
index 0000000000..2afc005c76
--- /dev/null
+++ b/injecting-beans/src/main/java/com/baeldung/App.java
@@ -0,0 +1,16 @@
+package com.baeldung;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+/**
+ * Application presenting various possibilities of bean injections in Spring.
+ */
+public class App {
+ public static void main(String[] args) {
+ ApplicationContext context = new ClassPathXmlApplicationContext("Spring-Module.xml");
+
+ Computer obj = (Computer) context.getBean("computer");
+ obj.print();
+ }
+}
diff --git a/injecting-beans/src/main/java/com/baeldung/Computer.java b/injecting-beans/src/main/java/com/baeldung/Computer.java
new file mode 100644
index 0000000000..b9551ad34d
--- /dev/null
+++ b/injecting-beans/src/main/java/com/baeldung/Computer.java
@@ -0,0 +1,55 @@
+package com.baeldung;
+
+import com.baeldung.model.*;
+import org.springframework.beans.factory.annotation.Autowired;
+
+/**
+ * Model for Computer.
+ */
+public class Computer {
+
+ @Autowired
+ private GraphicsCard graphicsCard;
+ private Processor processor;
+ private HardDisk hardDisk;
+ private Screen screen;
+ private OperatingSystem operatingSystem;
+
+ public Computer(Processor processor) {
+ this.processor = processor;
+ }
+
+ @Autowired
+ public Computer(OperatingSystem operatingSystem, Processor processor) {
+ this.operatingSystem = operatingSystem;
+ this.processor = processor;
+ }
+
+ public void setHardDisk(HardDisk hardDisk) {
+ this.hardDisk = hardDisk;
+ }
+
+ @Autowired
+ public void setScreen(Screen screen) {
+ this.screen = screen;
+ }
+
+ public void print() {
+ System.out.println("Injected processor by constructor injection: " + processor.getName());
+ System.out.println("Injected hard disk by setter injection: " + hardDisk.getName());
+ System.out.println("Injected graphics card with field annotation: " + graphicsCard.getName());
+ System.out.println("Injected screen with setter annotation: " + screen.getSize());
+ System.out.println("Injected operating system name with constructor annotation: " + operatingSystem.getName());
+ }
+
+ @Override
+ public String toString() {
+ return "Computer{" +
+ "graphicsCard=" + graphicsCard +
+ ", processor=" + processor +
+ ", hardDisk=" + hardDisk +
+ ", screen=" + screen +
+ ", operatingSystem=" + operatingSystem +
+ '}';
+ }
+}
diff --git a/injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java b/injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java
new file mode 100644
index 0000000000..70bec9b1cd
--- /dev/null
+++ b/injecting-beans/src/main/java/com/baeldung/model/GraphicsCard.java
@@ -0,0 +1,23 @@
+package com.baeldung.model;
+
+/**
+ * Model for graphics card.
+ */
+public class GraphicsCard {
+ String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "GraphicsCard{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+}
diff --git a/injecting-beans/src/main/java/com/baeldung/model/HardDisk.java b/injecting-beans/src/main/java/com/baeldung/model/HardDisk.java
new file mode 100644
index 0000000000..2117fb67a1
--- /dev/null
+++ b/injecting-beans/src/main/java/com/baeldung/model/HardDisk.java
@@ -0,0 +1,23 @@
+package com.baeldung.model;
+
+/**
+ * Model for hard disk drive.
+ */
+public class HardDisk {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "HardDisk{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+}
diff --git a/injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java b/injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java
new file mode 100644
index 0000000000..296445e60b
--- /dev/null
+++ b/injecting-beans/src/main/java/com/baeldung/model/OperatingSystem.java
@@ -0,0 +1,23 @@
+package com.baeldung.model;
+
+/**
+ * Model for operating system.
+ */
+public class OperatingSystem {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "OperatingSystem{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+}
diff --git a/injecting-beans/src/main/java/com/baeldung/model/Processor.java b/injecting-beans/src/main/java/com/baeldung/model/Processor.java
new file mode 100644
index 0000000000..ef41b15902
--- /dev/null
+++ b/injecting-beans/src/main/java/com/baeldung/model/Processor.java
@@ -0,0 +1,23 @@
+package com.baeldung.model;
+
+/**
+ * Model for Processor.
+ */
+public class Processor {
+ private String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Processor{" +
+ "name='" + name + '\'' +
+ '}';
+ }
+}
diff --git a/injecting-beans/src/main/java/com/baeldung/model/Screen.java b/injecting-beans/src/main/java/com/baeldung/model/Screen.java
new file mode 100644
index 0000000000..08b5da0550
--- /dev/null
+++ b/injecting-beans/src/main/java/com/baeldung/model/Screen.java
@@ -0,0 +1,24 @@
+package com.baeldung.model;
+
+/**
+ * Model for Screen.
+ */
+public class Screen {
+
+ private String size;
+
+ public String getSize() {
+ return size;
+ }
+
+ public void setSize(String size) {
+ this.size = size;
+ }
+
+ @Override
+ public String toString() {
+ return "Screen{" +
+ "size='" + size + '\'' +
+ '}';
+ }
+}
diff --git a/injecting-beans/src/main/resources/Spring-Module.xml b/injecting-beans/src/main/resources/Spring-Module.xml
new file mode 100644
index 0000000000..cb0b4c0589
--- /dev/null
+++ b/injecting-beans/src/main/resources/Spring-Module.xml
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file