diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ConstructorInjection.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ConstructorInjection.java new file mode 100644 index 000000000000..5c3710365e54 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ConstructorInjection.java @@ -0,0 +1,18 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.beans.factory.annotation.Autowired; + + +public class ConstructorInjection { + + private final MyInjectedBean myInjectedBean; + + @Autowired + public ConstructorInjection(MyInjectedBean myInjectedBean) { + this.myInjectedBean = myInjectedBean; + } + + public MyInjectedBean getMyInjectedBean() { + return myInjectedBean; + } +} diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/MyInjectedBean.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/MyInjectedBean.java new file mode 100644 index 000000000000..64bdb80a98c8 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/MyInjectedBean.java @@ -0,0 +1,10 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.stereotype.Component; + + +@Component +public class MyInjectedBean +{ + +} diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/SetterInjection.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/SetterInjection.java new file mode 100644 index 000000000000..a8ac059599aa --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/SetterInjection.java @@ -0,0 +1,19 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.beans.factory.annotation.Autowired; + + +public class SetterInjection +{ + + private MyInjectedBean myInjectedBean; + + @Autowired + public void setMyInjectedBean(MyInjectedBean myInjectedBean) { + this.myInjectedBean = myInjectedBean; + } + + public MyInjectedBean getMyInjectedBean() { + return myInjectedBean; + } +} diff --git a/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/InjectionTest.java b/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/InjectionTest.java new file mode 100644 index 000000000000..327a0102515d --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/InjectionTest.java @@ -0,0 +1,38 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + + +public class InjectionTest +{ + + private AnnotationConfigApplicationContext ctx; + + @Before + public void setUp() { + ctx = new AnnotationConfigApplicationContext(MyInjectedBean.class, ConstructorInjection.class, SetterInjection.class); + } + + @Test + public void testConstructorInjection() { + ConstructorInjection constructorInjection = ctx.getBean(ConstructorInjection.class); + Assert.assertNotNull(constructorInjection.getMyInjectedBean()); + } + + @Test + public void testSetterInjection() { + SetterInjection setterInjection = ctx.getBean(SetterInjection.class); + Assert.assertNotNull(setterInjection.getMyInjectedBean()); + } + + @Test + public void testSetterInjectionNonMandatory() { + SetterInjection setterInjection = new SetterInjection(); + Assert.assertNull(setterInjection.getMyInjectedBean()); + } +}