diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserConfig.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserConfig.java new file mode 100644 index 000000000000..20f9c7325ea4 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserConfig.java @@ -0,0 +1,9 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan +public class UserConfig { +} diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserDao.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserDao.java new file mode 100644 index 000000000000..896b44676224 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserDao.java @@ -0,0 +1,15 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.stereotype.Repository; + +import java.util.Arrays; +import java.util.List; + +@Repository +public class UserDao { + + public List getUsers() { + return Arrays.asList("John", "Sarah", "Mike"); + } + +} diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java new file mode 100644 index 000000000000..ef53ba6a7dc6 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java @@ -0,0 +1,20 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class UserManager { + + private UserDao userDao; + + @Autowired + public UserManager(UserDao userDao) { + this.userDao = userDao; + } + + public String getUsers() { + return String.join(", ", userDao.getUsers()); + } + +} diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserService.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserService.java new file mode 100644 index 000000000000..cf5380ac9f19 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserService.java @@ -0,0 +1,20 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserService { + + private UserDao userDao; + + @Autowired + public void setUserDao(UserDao userDao) { + this.userDao = userDao; + } + + public String getUsers() { + return String.join(", ", userDao.getUsers()); + } + +} diff --git a/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/UserDependencyInjectionTest.java b/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/UserDependencyInjectionTest.java new file mode 100644 index 000000000000..f68f09baec59 --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/UserDependencyInjectionTest.java @@ -0,0 +1,25 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.junit.Test; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; + +import static org.junit.Assert.assertEquals; + +public class UserDependencyInjectionTest { + + @Test + public void whenUserServiceGetsUsers_thenUsersAreReturned() { + ApplicationContext context = new AnnotationConfigApplicationContext(UserConfig.class); + UserService userService = context.getBean(UserService.class); + assertEquals("John, Sarah, Mike", userService.getUsers()); + } + + @Test + public void whenUserManagerGetsUsers_thenUsersAreReturned() { + ApplicationContext context = new AnnotationConfigApplicationContext(UserConfig.class); + UserManager userManager = context.getBean(UserManager.class); + assertEquals("John, Sarah, Mike", userManager.getUsers()); + } + +}