BAEL-2399: Guice vs Spring - Dependency Injection

This commit is contained in:
codehunter34
2018-12-23 16:41:11 -05:00
parent 3df9e64050
commit 8880d96d3a
19 changed files with 531 additions and 0 deletions
@@ -0,0 +1,72 @@
package com.baeldung.examples;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import com.baeldung.examples.common.BookService;
import com.baeldung.examples.guice.Employee;
import com.baeldung.examples.guice.FooGenerator;
import com.baeldung.examples.guice.GuiceUser;
import com.baeldung.examples.guice.GuiceUserService;
import com.baeldung.examples.guice.Person;
import com.baeldung.examples.guice.modules.GuiceModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
public class GuiceTests {
@Test
public void givenAccountFieldInjectedInGuiceUser_WhenGetAccountInvoked_ThenReturnValueIsNotNull() {
Injector injector = Guice.createInjector(new GuiceModule());
GuiceUser guiceUser = injector.getInstance(GuiceUser.class);
assertNotNull(guiceUser.getAccount());
}
@Test
public void givenAccountServiceInjectedInGuiceUserService_WhenGetAccountServiceInvoked_ThenReturnValueIsNotNull() {
Injector injector = Guice.createInjector(new GuiceModule());
GuiceUserService guiceUserService = injector.getInstance(GuiceUserService.class);
assertNotNull(guiceUserService.getAccountService());
}
@Test
public void givenBookServiceIsRegisteredInModule_WhenBookServiceIsInjected_ThenReturnValueIsNotNull() {
Injector injector = Guice.createInjector(new GuiceModule());
BookService bookService = injector.getInstance(BookService.class);
assertNotNull(bookService);
}
@Test
public void givenFooGeneratorConstructorParameterIsNotNullable_WhenFooGeneratorIsInjected_ThenTestFailsByProvisionException() {
Injector injector = Guice.createInjector(new GuiceModule());
FooGenerator fooGenerator = injector.getInstance(FooGenerator.class);
assertNotNull(fooGenerator);
}
@Test
public void givenMultipleBindingsForPerson_WhenPersonIsInjected_ThenTestFailsByProvisionException() {
Injector injector = Guice.createInjector(new GuiceModule());
Person person = injector.getInstance(Person.class);
assertNotNull(person);
}
@Test
public void givenEmployeeConstructorAnnotatedByInject_WhenEmployeeIsInjected_ThenInstanceWillBeCreatedFromTheConstructor() {
Injector injector = Guice.createInjector(new GuiceModule());
Employee employee = injector.getInstance(Employee.class);
assertNotNull(employee);
assertEquals("Default", employee.getLastName());
}
@Test
public void givenAddressAutowiredToGuiceUserBySetterInjection_WhenGuiceUserIsInjected_ThenAddressInitializedByTheSetter() {
Injector injector = Guice.createInjector(new GuiceModule());
GuiceUser guiceUser = injector.getInstance(GuiceUser.class);
assertNotNull(guiceUser);
assertNotNull(guiceUser.getAddress());
assertEquals("Default", guiceUser.getAddress().getCity());
}
}
@@ -0,0 +1,58 @@
package com.baeldung.examples;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
import com.baeldung.examples.common.BookService;
import com.baeldung.examples.spring.AppConfig;
import com.baeldung.examples.spring.SpringUser;
import com.baeldung.examples.spring.Student;
import com.baeldung.examples.spring.UserService;
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { AppConfig.class })
public class SpringTests {
@Autowired
ApplicationContext context;
@Test
public void givenAccountFieldAutowiredToSpringUser_WhenGetAccountInvoked_ThenReturnValueIsNotNull() {
SpringUser springUser = context.getBean(SpringUser.class);
assertNotNull(springUser.getAccount());
}
@Test
public void givenAccountServiceFieldAutowiredToUserService_WhenGetAccountServiceInvoked_ThenReturnValueIsNotNull() {
UserService userService = context.getBean(UserService.class);
assertNotNull(userService.getAccountService());
}
@Test
public void givenBookServiceIsRegisteredAsBeanInContext_WhenBookServiceIsRetrievedFromContext_ThenReturnValueIsNotNull() {
BookService bookService = context.getBean(BookService.class);
assertNotNull(bookService);
}
@Test
public void givenStudentConstructorAnnotatedByAutowired_WhenStudentIsRetrievedFromContext_ThenInstanceWillBeCreatedFromTheConstructor() {
Student student = context.getBean(Student.class);
assertNotNull(student);
assertEquals("Default", student.getFirstName());
assertEquals("Default", student.getLastName());
}
@Test
public void givenAddressAutowiredToSpringUserBySetterInjection_WhenSpringUserRetrievedFromContext_ThenAddressInitializedByTheSetter() {
SpringUser springUser = context.getBean(SpringUser.class);
assertNotNull(springUser.getAddress());
assertEquals("Default", springUser.getAddress().getCity());
}
}