diff --git a/spring-core/src/main/java/com/baeldung/beaninjectiontypes/BeanConfig.java b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/BeanConfig.java new file mode 100644 index 000000000000..b0f48e567d27 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/BeanConfig.java @@ -0,0 +1,18 @@ +package com.baeldung.beaninjectiontypes; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.beaninjectiontypes.models.Family; + +@Configuration +@ComponentScan("com.baeldung.beaninjectiontypes") +public class BeanConfig { + + @Bean + public Family family() { + return new Family("Ayo", "Kemi"); + } + +} diff --git a/spring-core/src/main/java/com/baeldung/beaninjectiontypes/ConstructorInjectionBean.java b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/ConstructorInjectionBean.java new file mode 100644 index 000000000000..ffe02c9b165b --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/ConstructorInjectionBean.java @@ -0,0 +1,38 @@ +package com.baeldung.beaninjectiontypes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.baeldung.beaninjectiontypes.models.Family; + +@Component +public class ConstructorInjectionBean { + + private Family family; + + @Autowired + public ConstructorInjectionBean(Family family) { + this.family = family; + } + + public int noOfChildren() { + return family.getChildren() + .size(); + } + + public void addChildToFamily(String childName) { + family.getChildren() + .add(childName); + } + + public boolean isChildAlive(String childName) { + return family.getChildren() + .contains(childName); + } + + public void killChild(String childName) { + family.getChildren() + .remove(childName); + } + +} diff --git a/spring-core/src/main/java/com/baeldung/beaninjectiontypes/SetterInjectionBean.java b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/SetterInjectionBean.java new file mode 100644 index 000000000000..7eb07efe010e --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/SetterInjectionBean.java @@ -0,0 +1,38 @@ +package com.baeldung.beaninjectiontypes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.baeldung.beaninjectiontypes.models.Family; + +@Component +public class SetterInjectionBean { + + private Family family; + + @Autowired + public void setFamily(Family family) { + this.family = family; + } + + public int noOfChildren() { + return family.getChildren() + .size(); + } + + public void addChildToFamily(String childName) { + family.getChildren() + .add(childName); + } + + public boolean isChildAlive(String childName) { + return family.getChildren() + .contains(childName); + } + + public void killChild(String childName) { + family.getChildren() + .remove(childName); + } + +} diff --git a/spring-core/src/main/java/com/baeldung/beaninjectiontypes/models/Family.java b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/models/Family.java new file mode 100644 index 000000000000..a61eacf46557 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/beaninjectiontypes/models/Family.java @@ -0,0 +1,42 @@ +package com.baeldung.beaninjectiontypes.models; + +import java.util.ArrayList; +import java.util.List; + +public class Family { + + private String father; + private String mother; + private List children; + + public Family(String father, String mother) { + this.father = father; + this.mother = mother; + this.children = new ArrayList<>(); + } + + public String getFather() { + return father; + } + + public void setFather(String father) { + this.father = father; + } + + public String getMother() { + return mother; + } + + public void setMother(String mother) { + this.mother = mother; + } + + public List getChildren() { + return children; + } + + public void setChildren(List children) { + this.children = children; + } + +} diff --git a/spring-core/src/test/java/com/baeldung/beaninjectiontypes/ConstructorInjectionBeanTest.java b/spring-core/src/test/java/com/baeldung/beaninjectiontypes/ConstructorInjectionBeanTest.java new file mode 100644 index 000000000000..027402b9d3f0 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/beaninjectiontypes/ConstructorInjectionBeanTest.java @@ -0,0 +1,41 @@ +package com.baeldung.beaninjectiontypes; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.beaninjectiontypes.models.Family; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { BeanConfig.class }) +public class ConstructorInjectionBeanTest { + + @Autowired + private ConstructorInjectionBean constructorFamilyBean; + + @Test + public void testConstructorInjectionBean() { + assertNotNull(constructorFamilyBean); + } + + @Test + public void testNoOfChildren() { + assertTrue(constructorFamilyBean.noOfChildren() == 0); + constructorFamilyBean.addChildToFamily("Bimbo"); + constructorFamilyBean.addChildToFamily("Bayo"); + assertTrue(constructorFamilyBean.noOfChildren() == 2); + } + + @Test + public void testAddChildToFamily() { + assertFalse(constructorFamilyBean.isChildAlive("Damola")); + constructorFamilyBean.addChildToFamily("Damola"); + assertTrue(constructorFamilyBean.isChildAlive("Damola")); + constructorFamilyBean.killChild("Damola"); + } + +} diff --git a/spring-core/src/test/java/com/baeldung/beaninjectiontypes/SetterInjectionBeanTest.java b/spring-core/src/test/java/com/baeldung/beaninjectiontypes/SetterInjectionBeanTest.java new file mode 100644 index 000000000000..602a04d1d7bd --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/beaninjectiontypes/SetterInjectionBeanTest.java @@ -0,0 +1,41 @@ +package com.baeldung.beaninjectiontypes; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.beaninjectiontypes.models.Family; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { BeanConfig.class }) +public class SetterInjectionBeanTest { + + @Autowired + private SetterInjectionBean setterFamilyBean; + + @Test + public void testSetterInjectionBean() { + assertNotNull(setterFamilyBean); + } + + @Test + public void testNoOfChildren() { + assertTrue(setterFamilyBean.noOfChildren() == 0); + setterFamilyBean.addChildToFamily("Bimbo"); + setterFamilyBean.addChildToFamily("Bayo"); + assertTrue(setterFamilyBean.noOfChildren() == 2); + } + + @Test + public void testAddChildToFamily() { + assertFalse(setterFamilyBean.isChildAlive("Damola")); + setterFamilyBean.addChildToFamily("Damola"); + assertTrue(setterFamilyBean.isChildAlive("Damola")); + setterFamilyBean.killChild("Damola"); + } + +}