From 41ad30313ab2c454350b5accdee531dba80e7ea9 Mon Sep 17 00:00:00 2001 From: Raghav Jha Date: Tue, 6 Feb 2018 00:17:30 +0530 Subject: [PATCH] Evaluation Article --- .../baeldung/spring/di/DepartmentService.java | 10 ++++++ ...loyeeControllerWithConstructorBasedDI.java | 19 ++++++++++ .../EmployeeControllerWithSetterBasedDI.java | 18 ++++++++++ spring-core/src/main/resources/spring-di.xml | 7 ++++ .../spring/di/DepdencyInjectionUnitTest.java | 35 +++++++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 spring-core/src/main/java/com/baeldung/spring/di/DepartmentService.java create mode 100644 spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithConstructorBasedDI.java create mode 100644 spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithSetterBasedDI.java create mode 100644 spring-core/src/main/resources/spring-di.xml create mode 100644 spring-core/src/test/java/com/baeldung/spring/di/DepdencyInjectionUnitTest.java diff --git a/spring-core/src/main/java/com/baeldung/spring/di/DepartmentService.java b/spring-core/src/main/java/com/baeldung/spring/di/DepartmentService.java new file mode 100644 index 0000000000..f087301f85 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/spring/di/DepartmentService.java @@ -0,0 +1,10 @@ +package com.baeldung.spring.di; + +import org.springframework.stereotype.Component; + +@Component +public class DepartmentService { + public String getDepartment() { + return "Management"; + } +} diff --git a/spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithConstructorBasedDI.java b/spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithConstructorBasedDI.java new file mode 100644 index 0000000000..a0b07fb32c --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithConstructorBasedDI.java @@ -0,0 +1,19 @@ +package com.baeldung.spring.di; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component("employeeControllerWithConstructorBasedDI") +public class EmployeeControllerWithConstructorBasedDI { + + private DepartmentService departmentService; + + @Autowired + public EmployeeControllerWithConstructorBasedDI(DepartmentService departmentService) { + this.departmentService = departmentService; + } + + public String getEmployeeDetails() { + return "Employee: A, Department: " + departmentService.getDepartment(); + } +} diff --git a/spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithSetterBasedDI.java b/spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithSetterBasedDI.java new file mode 100644 index 0000000000..bb3d05c2d4 --- /dev/null +++ b/spring-core/src/main/java/com/baeldung/spring/di/EmployeeControllerWithSetterBasedDI.java @@ -0,0 +1,18 @@ +package com.baeldung.spring.di; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component("employeeControllerWithSetterBasedDI") +public class EmployeeControllerWithSetterBasedDI { + private DepartmentService departmentService; + + @Autowired + public void setDepartmentService(DepartmentService departmentService) { + this.departmentService = departmentService; + } + + public String getEmployeeDetails() { + return "Employee: A, Department: " + departmentService.getDepartment(); + } +} diff --git a/spring-core/src/main/resources/spring-di.xml b/spring-core/src/main/resources/spring-di.xml new file mode 100644 index 0000000000..174285a402 --- /dev/null +++ b/spring-core/src/main/resources/spring-di.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/spring-core/src/test/java/com/baeldung/spring/di/DepdencyInjectionUnitTest.java b/spring-core/src/test/java/com/baeldung/spring/di/DepdencyInjectionUnitTest.java new file mode 100644 index 0000000000..7d1aed2dfa --- /dev/null +++ b/spring-core/src/test/java/com/baeldung/spring/di/DepdencyInjectionUnitTest.java @@ -0,0 +1,35 @@ +package com.baeldung.spring.di; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringJUnit4ClassRunner.class) +public class DepdencyInjectionUnitTest { + + private ApplicationContext context; + + @Before + public void oneTimeSetup() { + context = new ClassPathXmlApplicationContext("spring-di.xml"); + } + + @Test + public void givenConstructorBasedDI_ThenDependencyValid() { + EmployeeControllerWithConstructorBasedDI employee = (EmployeeControllerWithConstructorBasedDI) context + .getBean("employeeControllerWithConstructorBasedDI"); + assertEquals("Employee: A, Department: Management", employee.getEmployeeDetails()); + } + + @Test + public void givenSetterBasedDI_ThenDependencyValid() { + EmployeeControllerWithSetterBasedDI employee = (EmployeeControllerWithSetterBasedDI) context + .getBean("employeeControllerWithSetterBasedDI"); + assertEquals("Employee: A, Department: Management", employee.getEmployeeDetails()); + } +}