diff --git a/spring-core/src/main/java/com/baeldung/setterdi/Config.java b/spring-core/src/main/java/com/baeldung/setterdi/Config.java new file mode 100644 index 0000000000..68c1ae12a2 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/Config.java @@ -0,0 +1,35 @@ +package com.baeldung.setterdi; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.setterdi.domain.Engine; +import com.baeldung.setterdi.domain.Trailer; +import com.baeldung.setterdi.domain.Transmission; + +@Configuration +@ComponentScan("com.baeldung.setterdi") +public class Config { + + @Bean + public Engine engine() { + Engine engine = new Engine(); + engine.setType("v8"); + engine.setVolume(5); + return engine; + } + + @Bean + public Transmission transmission() { + Transmission transmission = new Transmission(); + transmission.setType("sliding"); + return transmission; + } + + @Bean + public Trailer trailer() { + Trailer trailer = new Trailer(); + return trailer; + } +} \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/setterdi/SpringRunner.java b/spring-core/src/main/java/com/baeldung/setterdi/SpringRunner.java new file mode 100644 index 0000000000..bc92b79e8a --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/SpringRunner.java @@ -0,0 +1,33 @@ +package com.baeldung.setterdi; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +import com.baeldung.setterdi.Config; +import com.baeldung.setterdi.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("setterdi.xml"); + + return context.getBean(Car.class); + } +} \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Car.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Car.java new file mode 100644 index 0000000000..749ff3984a --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Car.java @@ -0,0 +1,34 @@ +package com.baeldung.setterdi.domain; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class Car { + private Engine engine; + private Transmission transmission; + private Trailer trailer; + + public Car() { + } + + @Autowired + public void setEngine(Engine engine) { + this.engine = engine; + } + + @Autowired + public void setTransmission(Transmission transmission) { + this.transmission = transmission; + } + + @Autowired + public void setTrailer(Trailer trailer) { + this.trailer = trailer; + } + + @Override + public String toString() { + return String.format("Engine: %s Transmission: %s Trailer: %s", engine, transmission, trailer); + } +} diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Engine.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Engine.java new file mode 100644 index 0000000000..50c247cacf --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Engine.java @@ -0,0 +1,22 @@ +package com.baeldung.setterdi.domain; + +public class Engine { + private String type; + private int volume; + + public Engine() { + } + + public void setType(String type) { + this.type = type; + } + + public void setVolume(int volume) { + this.volume = volume; + } + + @Override + public String toString() { + return String.format("%s %d", type, volume); + } +} \ No newline at end of file diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Trailer.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Trailer.java new file mode 100644 index 0000000000..616732309e --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Trailer.java @@ -0,0 +1,11 @@ +package com.baeldung.setterdi.domain; + +public class Trailer { + public Trailer() { + } + + @Override + public String toString() { + return "Trailer"; + } +} diff --git a/spring-core/src/main/java/com/baeldung/setterdi/domain/Transmission.java b/spring-core/src/main/java/com/baeldung/setterdi/domain/Transmission.java new file mode 100644 index 0000000000..18b62afdc1 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/setterdi/domain/Transmission.java @@ -0,0 +1,17 @@ +package com.baeldung.setterdi.domain; + +public class Transmission { + private String type; + + public Transmission() { + } + + public void setType(String type) { + this.type = type; + } + + @Override + public String toString() { + return String.format("%s", type); + } +} diff --git a/spring-core/src/main/resources/constructordi.xml b/spring-core/src/main/resources/constructordi.xml new file mode 100644 index 0000000000..231e72adcb --- /dev/null +++ b/spring-core/src/main/resources/constructordi.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + diff --git a/spring-core/src/main/resources/setterdi.xml b/spring-core/src/main/resources/setterdi.xml new file mode 100644 index 0000000000..8b7f0d41e7 --- /dev/null +++ b/spring-core/src/main/resources/setterdi.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + +