diff --git a/spring-core/src/main/java/com/baeldung/constructordi/Config.java b/spring-core/src/main/java/com/baeldung/constructordi/Config.java
new file mode 100644
index 0000000000..07568018f3
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/constructordi/Config.java
@@ -0,0 +1,23 @@
+package com.baeldung.constructordi;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+import com.baeldung.constructordi.domain.Engine;
+import com.baeldung.constructordi.domain.Transmission;
+
+@Configuration
+@ComponentScan("com.baeldung.constructordi")
+public class Config {
+
+ @Bean
+ public Engine engine() {
+ return new Engine("v8", 5);
+ }
+
+ @Bean
+ public Transmission transmission() {
+ return new Transmission("sliding");
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java
new file mode 100644
index 0000000000..623739f036
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/constructordi/SpringRunner.java
@@ -0,0 +1,31 @@
+package com.baeldung.constructordi;
+
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.annotation.AnnotationConfigApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import com.baeldung.constructordi.domain.Car;
+
+public class SpringRunner {
+ public static void main(String[] args) {
+ Car toyota = getCarFromXml();
+
+ System.out.println(toyota);
+
+ toyota = getCarFromJavaConfig();
+
+ System.out.println(toyota);
+ }
+
+ private static Car getCarFromJavaConfig() {
+ ApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
+
+ return context.getBean(Car.class);
+ }
+
+ private static Car getCarFromXml() {
+ ApplicationContext context = new ClassPathXmlApplicationContext("baeldung.xml");
+
+ return context.getBean(Car.class);
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java
new file mode 100644
index 0000000000..9f68ba5cd9
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Car.java
@@ -0,0 +1,21 @@
+package com.baeldung.constructordi.domain;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Car {
+ private Engine engine;
+ private Transmission transmission;
+
+ @Autowired
+ public Car(Engine engine, Transmission transmission) {
+ this.engine = engine;
+ this.transmission = transmission;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("Engine: %s Transmission: %s", engine, transmission);
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java
new file mode 100644
index 0000000000..f2987988eb
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Engine.java
@@ -0,0 +1,16 @@
+package com.baeldung.constructordi.domain;
+
+public class Engine {
+ private String type;
+ private int volume;
+
+ public Engine(String type, int volume) {
+ this.type = type;
+ this.volume = volume;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s %d", type, volume);
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java b/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java
new file mode 100644
index 0000000000..85271e1f2a
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/constructordi/domain/Transmission.java
@@ -0,0 +1,14 @@
+package com.baeldung.constructordi.domain;
+
+public class Transmission {
+ private String type;
+
+ public Transmission(String type) {
+ this.type = type;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("%s", type);
+ }
+}
diff --git a/spring-core/src/main/resources/baeldung.xml b/spring-core/src/main/resources/baeldung.xml
new file mode 100644
index 0000000000..d84492f1d4
--- /dev/null
+++ b/spring-core/src/main/resources/baeldung.xml
@@ -0,0 +1,20 @@
+