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 @@ + + + + + + + + + + + + + + + + +