From 6e608187dbdbbd9b862dcab4f938cb6125e8272a Mon Sep 17 00:00:00 2001 From: Taylor Daugherty Date: Thu, 16 Nov 2017 05:51:31 -0500 Subject: [PATCH 1/2] Different types of Bean Injection in Spring --- .../UserApplication.java | 16 +++++++++++++++ .../dependencyinjectiontypes/UserDao.java | 12 +++++++++++ .../dependencyinjectiontypes/UserManager.java | 20 +++++++++++++++++++ .../dependencyinjectiontypes/UserService.java | 20 +++++++++++++++++++ .../resources/userbeaninjection-context.xml | 16 +++++++++++++++ 5 files changed, 84 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java create mode 100644 spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserDao.java create mode 100644 spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java create mode 100644 spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserService.java create mode 100644 spring-core/src/main/resources/userbeaninjection-context.xml diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java new file mode 100644 index 000000000000..5ff32459fae4 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java @@ -0,0 +1,16 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public class UserApplication { + + public static void main(String[] args) { + ApplicationContext context = new ClassPathXmlApplicationContext("userbeaninjection-context.xml"); + UserService userService = context.getBean("userService", UserService.class); + userService.printUsers(); + UserManager userManager = context.getBean("userManager", UserManager.class); + userManager.printUsers(); + } + +} 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..90b0ce4a7997 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserDao.java @@ -0,0 +1,12 @@ +package com.baeldung.dependencyinjectiontypes; + +import java.util.Arrays; +import java.util.List; + +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..3a102993ffdc --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java @@ -0,0 +1,20 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class UserManager { + + public static final Logger LOGGER = LoggerFactory.getLogger(UserManager.class); + + private UserDao userDao; + + public UserManager(UserDao userDao) { + this.userDao = userDao; + } + + public void printUsers() { + LOGGER.info("Users: {}", 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..3a8bb1054aa4 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserService.java @@ -0,0 +1,20 @@ +package com.baeldung.dependencyinjectiontypes; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class UserService { + + private static final Logger LOGGER = LoggerFactory.getLogger(UserService.class); + + private UserDao userDao; + + public void setUserDao(UserDao userDao) { + this.userDao = userDao; + } + + public void printUsers() { + LOGGER.info("Users: {}", userDao.getUsers()); + } + +} diff --git a/spring-core/src/main/resources/userbeaninjection-context.xml b/spring-core/src/main/resources/userbeaninjection-context.xml new file mode 100644 index 000000000000..c6f39d6e14f8 --- /dev/null +++ b/spring-core/src/main/resources/userbeaninjection-context.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + From 2fdff6333b93d291c426362b89a56951259795bd Mon Sep 17 00:00:00 2001 From: Taylor Daugherty Date: Mon, 20 Nov 2017 20:54:58 -0500 Subject: [PATCH 2/2] editor feedback --- .../UserApplication.java | 16 ------------ .../dependencyinjectiontypes/UserConfig.java | 9 +++++++ .../dependencyinjectiontypes/UserDao.java | 3 +++ .../dependencyinjectiontypes/UserManager.java | 12 ++++----- .../dependencyinjectiontypes/UserService.java | 12 ++++----- .../resources/userbeaninjection-context.xml | 16 ------------ .../UserDependencyInjectionTest.java | 25 +++++++++++++++++++ 7 files changed, 49 insertions(+), 44 deletions(-) delete mode 100644 spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java create mode 100644 spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserConfig.java delete mode 100644 spring-core/src/main/resources/userbeaninjection-context.xml create mode 100644 spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/UserDependencyInjectionTest.java diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java deleted file mode 100644 index 5ff32459fae4..000000000000 --- a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserApplication.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.dependencyinjectiontypes; - -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - -public class UserApplication { - - public static void main(String[] args) { - ApplicationContext context = new ClassPathXmlApplicationContext("userbeaninjection-context.xml"); - UserService userService = context.getBean("userService", UserService.class); - userService.printUsers(); - UserManager userManager = context.getBean("userManager", UserManager.class); - userManager.printUsers(); - } - -} 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 index 90b0ce4a7997..896b44676224 100644 --- a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserDao.java +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserDao.java @@ -1,8 +1,11 @@ package com.baeldung.dependencyinjectiontypes; +import org.springframework.stereotype.Repository; + import java.util.Arrays; import java.util.List; +@Repository public class UserDao { public List getUsers() { diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java index 3a102993ffdc..ef53ba6a7dc6 100644 --- a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserManager.java @@ -1,20 +1,20 @@ package com.baeldung.dependencyinjectiontypes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +@Component public class UserManager { - public static final Logger LOGGER = LoggerFactory.getLogger(UserManager.class); - private UserDao userDao; + @Autowired public UserManager(UserDao userDao) { this.userDao = userDao; } - public void printUsers() { - LOGGER.info("Users: {}", userDao.getUsers()); + 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 index 3a8bb1054aa4..cf5380ac9f19 100644 --- a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserService.java +++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/UserService.java @@ -1,20 +1,20 @@ package com.baeldung.dependencyinjectiontypes; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +@Service public class UserService { - private static final Logger LOGGER = LoggerFactory.getLogger(UserService.class); - private UserDao userDao; + @Autowired public void setUserDao(UserDao userDao) { this.userDao = userDao; } - public void printUsers() { - LOGGER.info("Users: {}", userDao.getUsers()); + public String getUsers() { + return String.join(", ", userDao.getUsers()); } } diff --git a/spring-core/src/main/resources/userbeaninjection-context.xml b/spring-core/src/main/resources/userbeaninjection-context.xml deleted file mode 100644 index c6f39d6e14f8..000000000000 --- a/spring-core/src/main/resources/userbeaninjection-context.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - 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()); + } + +}