diff --git a/guice/pom.xml b/guice/pom.xml
index 54532bc992..0aea662d64 100644
--- a/guice/pom.xml
+++ b/guice/pom.xml
@@ -37,7 +37,7 @@
- 4.1.0
+ 4.2.2
5.1.3.RELEASE
5.1.3.RELEASE
diff --git a/guice/src/main/java/com/baeldung/examples/common/Account.java b/guice/src/main/java/com/baeldung/examples/common/Account.java
index 09a9d80b6a..8f8b5059c5 100644
--- a/guice/src/main/java/com/baeldung/examples/common/Account.java
+++ b/guice/src/main/java/com/baeldung/examples/common/Account.java
@@ -5,23 +5,23 @@ import org.springframework.stereotype.Component;
@Component
public class Account {
- private String accountNumber;
- private String type;
+ private String accountNumber;
+ private String type;
- public String getAccountNumber() {
- return accountNumber;
- }
+ public String getAccountNumber() {
+ return accountNumber;
+ }
- public void setAccountNumber(String accountNumber) {
- this.accountNumber = accountNumber;
- }
+ public void setAccountNumber(String accountNumber) {
+ this.accountNumber = accountNumber;
+ }
- public String getType() {
- return type;
- }
+ public String getType() {
+ return type;
+ }
- public void setType(String type) {
- this.type = type;
- }
+ public void setType(String type) {
+ this.type = type;
+ }
}
diff --git a/guice/src/main/java/com/baeldung/examples/common/AccountService.java b/guice/src/main/java/com/baeldung/examples/common/AccountService.java
index d6a7fe1d11..97a64e3c6e 100644
--- a/guice/src/main/java/com/baeldung/examples/common/AccountService.java
+++ b/guice/src/main/java/com/baeldung/examples/common/AccountService.java
@@ -1,8 +1,5 @@
package com.baeldung.examples.common;
-import java.util.List;
-
public interface AccountService {
- public List listAccountTypes();
}
diff --git a/guice/src/main/java/com/baeldung/examples/common/AccountServiceImpl.java b/guice/src/main/java/com/baeldung/examples/common/AccountServiceImpl.java
index 9cecf021fe..969c106d5b 100644
--- a/guice/src/main/java/com/baeldung/examples/common/AccountServiceImpl.java
+++ b/guice/src/main/java/com/baeldung/examples/common/AccountServiceImpl.java
@@ -1,15 +1,8 @@
package com.baeldung.examples.common;
-import java.util.Arrays;
-import java.util.List;
-
import org.springframework.stereotype.Component;
@Component
public class AccountServiceImpl implements AccountService {
- public List listAccountTypes() {
- return Arrays.asList("Checking", "Saving");
- }
-
}
diff --git a/guice/src/main/java/com/baeldung/examples/common/Address.java b/guice/src/main/java/com/baeldung/examples/common/Address.java
deleted file mode 100644
index 3b07c47011..0000000000
--- a/guice/src/main/java/com/baeldung/examples/common/Address.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.baeldung.examples.common;
-
-import org.springframework.stereotype.Component;
-
-@Component
-public class Address {
- private String city;
- private String state;
- private String county;
-
- public String getCity() {
- return city;
- }
-
- public void setCity(String city) {
- this.city = city;
- }
-
- public String getState() {
- return state;
- }
-
- public void setState(String state) {
- this.state = state;
- }
-
- public String getCounty() {
- return county;
- }
-
- public void setCounty(String county) {
- this.county = county;
- }
-
-}
diff --git a/guice/src/main/java/com/baeldung/examples/common/AudioBookService.java b/guice/src/main/java/com/baeldung/examples/common/AudioBookService.java
new file mode 100644
index 0000000000..5d501f2051
--- /dev/null
+++ b/guice/src/main/java/com/baeldung/examples/common/AudioBookService.java
@@ -0,0 +1,5 @@
+package com.baeldung.examples.common;
+
+public interface AudioBookService {
+
+}
diff --git a/guice/src/main/java/com/baeldung/examples/common/AudioBookServiceImpl.java b/guice/src/main/java/com/baeldung/examples/common/AudioBookServiceImpl.java
new file mode 100644
index 0000000000..c64e953a58
--- /dev/null
+++ b/guice/src/main/java/com/baeldung/examples/common/AudioBookServiceImpl.java
@@ -0,0 +1,5 @@
+package com.baeldung.examples.common;
+
+public class AudioBookServiceImpl implements AudioBookService {
+
+}
diff --git a/guice/src/main/java/com/baeldung/examples/common/AuthorService.java b/guice/src/main/java/com/baeldung/examples/common/AuthorService.java
new file mode 100644
index 0000000000..9be148b8c3
--- /dev/null
+++ b/guice/src/main/java/com/baeldung/examples/common/AuthorService.java
@@ -0,0 +1,5 @@
+package com.baeldung.examples.common;
+
+public interface AuthorService {
+
+}
diff --git a/guice/src/main/java/com/baeldung/examples/common/AuthorServiceImpl.java b/guice/src/main/java/com/baeldung/examples/common/AuthorServiceImpl.java
new file mode 100644
index 0000000000..bac532e469
--- /dev/null
+++ b/guice/src/main/java/com/baeldung/examples/common/AuthorServiceImpl.java
@@ -0,0 +1,5 @@
+package com.baeldung.examples.common;
+
+public class AuthorServiceImpl implements AuthorService {
+
+}
diff --git a/guice/src/main/java/com/baeldung/examples/common/BookService.java b/guice/src/main/java/com/baeldung/examples/common/BookService.java
index 3aca9d90d7..56339c1398 100644
--- a/guice/src/main/java/com/baeldung/examples/common/BookService.java
+++ b/guice/src/main/java/com/baeldung/examples/common/BookService.java
@@ -1,9 +1,5 @@
package com.baeldung.examples.common;
-import java.util.List;
-
public interface BookService {
- public List findBestSellerBooks();
-
}
diff --git a/guice/src/main/java/com/baeldung/examples/common/BookServiceImpl.java b/guice/src/main/java/com/baeldung/examples/common/BookServiceImpl.java
index b5499c678d..01f968bbe9 100644
--- a/guice/src/main/java/com/baeldung/examples/common/BookServiceImpl.java
+++ b/guice/src/main/java/com/baeldung/examples/common/BookServiceImpl.java
@@ -1,12 +1,10 @@
package com.baeldung.examples.common;
-import java.util.Arrays;
-import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
public class BookServiceImpl implements BookService {
- public List findBestSellerBooks() {
- return Arrays.asList("Harry Potter", "Lord of The Rings");
- }
+ @Autowired(required = false)
+ private AuthorService authorService;
}
diff --git a/guice/src/main/java/com/baeldung/examples/guice/Employee.java b/guice/src/main/java/com/baeldung/examples/guice/Employee.java
deleted file mode 100644
index b85d251a05..0000000000
--- a/guice/src/main/java/com/baeldung/examples/guice/Employee.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.baeldung.examples.guice;
-
-import com.google.inject.Inject;
-
-public class Employee {
-
- private String firstName;
- private String lastName;
-
- @Inject
- public Employee(String firstName) {
- this.firstName = firstName;
- this.lastName = "Default";
- }
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
-}
diff --git a/guice/src/main/java/com/baeldung/examples/guice/Foo.java b/guice/src/main/java/com/baeldung/examples/guice/Foo.java
index a4f22a6f69..fca32b165b 100644
--- a/guice/src/main/java/com/baeldung/examples/guice/Foo.java
+++ b/guice/src/main/java/com/baeldung/examples/guice/Foo.java
@@ -1,5 +1,4 @@
package com.baeldung.examples.guice;
-
public class Foo {
}
diff --git a/guice/src/main/java/com/baeldung/examples/guice/FooGenerator.java b/guice/src/main/java/com/baeldung/examples/guice/FooProcessor.java
similarity index 52%
rename from guice/src/main/java/com/baeldung/examples/guice/FooGenerator.java
rename to guice/src/main/java/com/baeldung/examples/guice/FooProcessor.java
index b2d3309d0e..f0cba31d9a 100644
--- a/guice/src/main/java/com/baeldung/examples/guice/FooGenerator.java
+++ b/guice/src/main/java/com/baeldung/examples/guice/FooProcessor.java
@@ -4,8 +4,9 @@ import org.springframework.lang.Nullable;
import com.google.inject.Inject;
-public class FooGenerator {
- @Inject
- public FooGenerator(@Nullable Foo foo) {
- }
+public class FooProcessor {
+
+ @Inject
+ @Nullable
+ private Foo foo;
}
\ No newline at end of file
diff --git a/guice/src/main/java/com/baeldung/examples/guice/GuiceUser.java b/guice/src/main/java/com/baeldung/examples/guice/GuiceUser.java
deleted file mode 100644
index df438add5b..0000000000
--- a/guice/src/main/java/com/baeldung/examples/guice/GuiceUser.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.baeldung.examples.guice;
-
-import com.baeldung.examples.common.Account;
-import com.baeldung.examples.common.Address;
-import com.google.inject.Inject;
-
-public class GuiceUser {
-
- @Inject
- private Account account;
-
- private Address address;
-
- public Account getAccount() {
- return account;
- }
-
- public void setAccount(Account account) {
- this.account = account;
- }
-
- public Address getAddress() {
- return address;
- }
-
- @Inject
- public void setAddress(Address address) {
- this.address = address;
- address.setCity("Default");
- }
-
-}
diff --git a/guice/src/main/java/com/baeldung/examples/guice/GuiceUserService.java b/guice/src/main/java/com/baeldung/examples/guice/GuiceUserService.java
index 18cb076661..0e58d0bacf 100644
--- a/guice/src/main/java/com/baeldung/examples/guice/GuiceUserService.java
+++ b/guice/src/main/java/com/baeldung/examples/guice/GuiceUserService.java
@@ -5,15 +5,15 @@ import com.google.inject.Inject;
public class GuiceUserService {
- @Inject
- private AccountService accountService;
+ @Inject
+ private AccountService accountService;
- public AccountService getAccountService() {
- return accountService;
- }
+ public AccountService getAccountService() {
+ return accountService;
+ }
- public void setAccountService(AccountService accountService) {
- this.accountService = accountService;
- }
+ public void setAccountService(AccountService accountService) {
+ this.accountService = accountService;
+ }
}
diff --git a/guice/src/main/java/com/baeldung/examples/guice/Person.java b/guice/src/main/java/com/baeldung/examples/guice/Person.java
index 45ee5f4b89..d54b5110eb 100644
--- a/guice/src/main/java/com/baeldung/examples/guice/Person.java
+++ b/guice/src/main/java/com/baeldung/examples/guice/Person.java
@@ -1,39 +1,24 @@
package com.baeldung.examples.guice;
-import com.baeldung.examples.common.Address;
-import com.google.inject.Inject;
-
public class Person {
- private String firstName;
+ private String firstName;
- private String lastName;
+ private String lastName;
- private Address address;
+ public String getFirstName() {
+ return firstName;
+ }
- public String getFirstName() {
- return firstName;
- }
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
+ public String getLastName() {
+ return lastName;
+ }
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public Address getAddress() {
- return address;
- }
-
- @Inject
- public void setAddress(Address address) {
- this.address = address;
- address.setCity("Default");
- }
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
}
diff --git a/guice/src/main/java/com/baeldung/examples/guice/modules/GuiceModule.java b/guice/src/main/java/com/baeldung/examples/guice/modules/GuiceModule.java
index 8dba228f08..6a380e922b 100644
--- a/guice/src/main/java/com/baeldung/examples/guice/modules/GuiceModule.java
+++ b/guice/src/main/java/com/baeldung/examples/guice/modules/GuiceModule.java
@@ -17,14 +17,7 @@ public class GuiceModule extends AbstractModule {
@Override
protected void configure() {
try {
- bind(PersonDao.class).to(PersonDaoImpl.class);
bind(AccountService.class).to(AccountServiceImpl.class);
- bind(Foo.class).toProvider(new Provider() {
- public Foo get() {
- return null;
- }
- });
-
bind(Person.class).toConstructor(Person.class.getConstructor());
// bind(Person.class).toProvider(new Provider() {
// public Person get() {
@@ -32,6 +25,13 @@ public class GuiceModule extends AbstractModule {
// return p;
// }
// });
+ bind(Foo.class).toProvider(new Provider() {
+ public Foo get() {
+ return null;
+ }
+ });
+ bind(PersonDao.class).to(PersonDaoImpl.class);
+
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
diff --git a/guice/src/main/java/com/baeldung/examples/spring/SpringBeansConfig.java b/guice/src/main/java/com/baeldung/examples/spring/SpringBeansConfig.java
new file mode 100644
index 0000000000..ef0c23142c
--- /dev/null
+++ b/guice/src/main/java/com/baeldung/examples/spring/SpringBeansConfig.java
@@ -0,0 +1,17 @@
+package com.baeldung.examples.spring;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import com.baeldung.examples.common.AudioBookService;
+import com.baeldung.examples.common.AudioBookServiceImpl;
+
+@Configuration
+public class SpringBeansConfig {
+
+ @Bean
+ public AudioBookService audioBookServiceGenerator() {
+ return new AudioBookServiceImpl();
+ }
+
+}
diff --git a/guice/src/main/java/com/baeldung/examples/spring/AppConfig.java b/guice/src/main/java/com/baeldung/examples/spring/SpringMainConfig.java
similarity index 61%
rename from guice/src/main/java/com/baeldung/examples/spring/AppConfig.java
rename to guice/src/main/java/com/baeldung/examples/spring/SpringMainConfig.java
index e5b6648e0d..1ced22288f 100644
--- a/guice/src/main/java/com/baeldung/examples/spring/AppConfig.java
+++ b/guice/src/main/java/com/baeldung/examples/spring/SpringMainConfig.java
@@ -3,17 +3,19 @@ package com.baeldung.examples.spring;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Import;
import com.baeldung.examples.common.BookService;
import com.baeldung.examples.common.BookServiceImpl;
@Configuration
+@Import({ SpringBeansConfig.class })
@ComponentScan("com.baeldung.examples")
-public class AppConfig {
+public class SpringMainConfig {
- @Bean
- public BookService bookServiceGenerator() {
- return new BookServiceImpl();
- }
+ @Bean
+ public BookService bookServiceGenerator() {
+ return new BookServiceImpl();
+ }
}
diff --git a/guice/src/main/java/com/baeldung/examples/spring/SpringUser.java b/guice/src/main/java/com/baeldung/examples/spring/SpringUser.java
deleted file mode 100644
index ba6aaab09b..0000000000
--- a/guice/src/main/java/com/baeldung/examples/spring/SpringUser.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.baeldung.examples.spring;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import com.baeldung.examples.common.Account;
-import com.baeldung.examples.common.Address;
-
-@Component
-public class SpringUser {
-
- @Autowired
- private Account account;
-
- private Address address;
-
- public Account getAccount() {
- return account;
- }
-
- public void setAccount(Account account) {
- this.account = account;
- }
-
- public Address getAddress() {
- return address;
- }
-
- @Autowired
- public void setAddress(Address address) {
- this.address = address;
- address.setCity("Default");
- }
-
-}
diff --git a/guice/src/main/java/com/baeldung/examples/spring/UserService.java b/guice/src/main/java/com/baeldung/examples/spring/UserService.java
index 91b95c100d..4173ef8208 100644
--- a/guice/src/main/java/com/baeldung/examples/spring/UserService.java
+++ b/guice/src/main/java/com/baeldung/examples/spring/UserService.java
@@ -8,15 +8,15 @@ import com.baeldung.examples.common.AccountService;
@Component
public class UserService {
- @Autowired
- private AccountService accountService;
+ @Autowired
+ private AccountService accountService;
- public AccountService getAccountService() {
- return accountService;
- }
+ public AccountService getAccountService() {
+ return accountService;
+ }
- public void setAccountService(AccountService accountService) {
- this.accountService = accountService;
- }
+ public void setAccountService(AccountService accountService) {
+ this.accountService = accountService;
+ }
}
diff --git a/guice/src/test/java/com/baeldung/examples/GuiceUnitTest.java b/guice/src/test/java/com/baeldung/examples/GuiceUnitTest.java
index ea40ab8c34..dd2a89e101 100644
--- a/guice/src/test/java/com/baeldung/examples/GuiceUnitTest.java
+++ b/guice/src/test/java/com/baeldung/examples/GuiceUnitTest.java
@@ -5,9 +5,8 @@ import static org.junit.Assert.assertNotNull;
import org.junit.Test;
import com.baeldung.examples.common.BookService;
-import com.baeldung.examples.guice.FooGenerator;
+import com.baeldung.examples.guice.FooProcessor;
import com.baeldung.examples.guice.GuicePersonService;
-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;
@@ -16,62 +15,47 @@ import com.google.inject.Injector;
public class GuiceUnitTest {
- @Test
- public void givenAccountInjectedInGuiceUser_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 givenPersonDaoInjectedInGuicePersonService_WhenGetPersonDaoInvoked_ThenReturnValueIsNotNull() {
- Injector injector = Guice.createInjector(new GuiceModule());
- GuicePersonService personService = injector.getInstance(GuicePersonService.class);
- assertNotNull(personService);
- assertNotNull(personService.getPersonDao());
- }
+ @Test
+ public void givenBookServiceIsRegisteredInModule_WhenBookServiceIsInjected_ThenReturnValueIsNotNull() {
+ Injector injector = Guice.createInjector(new GuiceModule());
+ BookService bookService = injector.getInstance(BookService.class);
+ assertNotNull(bookService);
+ }
- @Test
- public void givenAccountServiceInjectedInGuiceUserService_WhenGetAccountServiceInvoked_ThenReturnValueIsNotNull() {
- Injector injector = Guice.createInjector(new GuiceModule());
- GuiceUserService guiceUserService = injector.getInstance(GuiceUserService.class);
- assertNotNull(guiceUserService.getAccountService());
- }
+ @Test
+ public void givenMultipleBindingsForPerson_WhenPersonIsInjected_ThenTestFailsByProvisionException() {
+ Injector injector = Guice.createInjector(new GuiceModule());
+ Person person = injector.getInstance(Person.class);
+ assertNotNull(person);
+ }
- @Test
- public void givenBookServiceIsRegisteredInModule_WhenBookServiceIsInjected_ThenReturnValueIsNotNull() {
- Injector injector = Guice.createInjector(new GuiceModule());
- BookService bookService = injector.getInstance(BookService.class);
- assertNotNull(bookService);
- }
+ @Test
+ public void givenFooInjectedToFooProcessorAsOptionalDependency_WhenFooProcessorIsRetrievedFromContext_ThenCreationExceptionIsNotThrown() {
+ Injector injector = Guice.createInjector(new GuiceModule());
+ FooProcessor fooProcessor = injector.getInstance(FooProcessor.class);
+ assertNotNull(fooProcessor);
+ }
- @Test
- public void givenFooGeneratorConstructorParameterIsNotNullable_WhenFooGeneratorIsInjected_ThenTestFailsByProvisionException() {
- Injector injector = Guice.createInjector(new GuiceModule());
- FooGenerator fooGenerator = injector.getInstance(FooGenerator.class);
- assertNotNull(fooGenerator);
- }
+ @Test
+ public void givenGuicePersonServiceConstructorAnnotatedByInject_WhenGuicePersonServiceIsInjected_ThenInstanceWillBeCreatedFromTheConstructor() {
+ Injector injector = Guice.createInjector(new GuiceModule());
+ GuicePersonService personService = injector.getInstance(GuicePersonService.class);
+ assertNotNull(personService);
+ }
- @Test
- public void givenMultipleBindingsForPerson_WhenPersonIsInjected_ThenTestFailsByProvisionException() {
- Injector injector = Guice.createInjector(new GuiceModule());
- Person person = injector.getInstance(Person.class);
- assertNotNull(person);
- }
-
- @Test
- public void givenGuicePersonServiceConstructorAnnotatedByInject_WhenGuicePersonServiceIsInjected_ThenInstanceWillBeCreatedFromTheConstructor() {
- Injector injector = Guice.createInjector(new GuiceModule());
- GuicePersonService personService = injector.getInstance(GuicePersonService.class);
- assertNotNull(personService);
- }
-
- @Test
- public void givenPersonDaoInjectedToGuicePersonServiceBySetterInjection_WhenGuicePersonServiceIsInjected_ThenPersonDaoInitializedByTheSetter() {
- Injector injector = Guice.createInjector(new GuiceModule());
- GuicePersonService personService = injector.getInstance(GuicePersonService.class);
- assertNotNull(personService);
- assertNotNull(personService.getPersonDao());
- }
+ @Test
+ public void givenPersonDaoInjectedToGuicePersonServiceBySetterInjection_WhenGuicePersonServiceIsInjected_ThenPersonDaoInitializedByTheSetter() {
+ Injector injector = Guice.createInjector(new GuiceModule());
+ GuicePersonService personService = injector.getInstance(GuicePersonService.class);
+ assertNotNull(personService);
+ assertNotNull(personService.getPersonDao());
+ }
}
diff --git a/guice/src/test/java/com/baeldung/examples/SpringUnitTest.java b/guice/src/test/java/com/baeldung/examples/SpringUnitTest.java
index dce676d4cd..64e1eedcac 100644
--- a/guice/src/test/java/com/baeldung/examples/SpringUnitTest.java
+++ b/guice/src/test/java/com/baeldung/examples/SpringUnitTest.java
@@ -9,54 +9,55 @@ import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringRunner;
+import com.baeldung.examples.common.AudioBookService;
import com.baeldung.examples.common.BookService;
-import com.baeldung.examples.spring.AppConfig;
+import com.baeldung.examples.spring.SpringMainConfig;
import com.baeldung.examples.spring.SpringPersonService;
-import com.baeldung.examples.spring.SpringUser;
import com.baeldung.examples.spring.UserService;
@RunWith(SpringRunner.class)
-@ContextConfiguration(classes = { AppConfig.class })
+@ContextConfiguration(classes = { SpringMainConfig.class })
public class SpringUnitTest {
- @Autowired
- ApplicationContext context;
+ @Autowired
+ ApplicationContext context;
- @Test
- public void givenAccountAutowiredToSpringUser_WhenGetAccountInvoked_ThenReturnValueIsNotNull() {
- SpringUser springUser = context.getBean(SpringUser.class);
- assertNotNull(springUser.getAccount());
- }
+ @Test
+ public void givenAccountServiceAutowiredToUserService_WhenGetAccountServiceInvoked_ThenReturnValueIsNotNull() {
+ UserService userService = context.getBean(UserService.class);
+ assertNotNull(userService.getAccountService());
+ }
- @Test
- public void givenPersonDaoAutowiredToSpringPersonService_WhenGetPersonDaoInvoked_ThenReturnValueIsNotNull() {
- SpringPersonService personService = context.getBean(SpringPersonService.class);
- assertNotNull(personService);
- assertNotNull(personService.getPersonDao());
- }
+ @Test
+ public void givenBookServiceIsRegisteredAsBeanInContext_WhenBookServiceIsRetrievedFromContext_ThenReturnValueIsNotNull() {
+ BookService bookService = context.getBean(BookService.class);
+ assertNotNull(bookService);
+ }
- @Test
- public void givenAccountServiceAutowiredToUserService_WhenGetAccountServiceInvoked_ThenReturnValueIsNotNull() {
- UserService userService = context.getBean(UserService.class);
- assertNotNull(userService.getAccountService());
- }
+ @Test
+ public void givenBookServiceIsRegisteredAsBeanInContextByOverridingAudioBookService_WhenAudioBookServiceIsRetrievedFromContext_ThenNoSuchBeanDefinitionExceptionIsThrown() {
+ BookService bookService = context.getBean(BookService.class);
+ assertNotNull(bookService);
+ AudioBookService audioBookService = context.getBean(AudioBookService.class);
+ assertNotNull(audioBookService);
+ }
- @Test
- public void givenBookServiceIsRegisteredAsBeanInContext_WhenBookServiceIsRetrievedFromContext_ThenReturnValueIsNotNull() {
- BookService bookService = context.getBean(BookService.class);
- assertNotNull(bookService);
- }
+ @Test
+ public void givenAuthorServiceAutowiredToBookServiceAsOptionalDependency_WhenBookServiceIsRetrievedFromContext_ThenNoSuchBeanDefinitionExceptionIsNotThrown() {
+ BookService bookService = context.getBean(BookService.class);
+ assertNotNull(bookService);
+ }
- @Test
- public void givenSpringPersonServiceConstructorAnnotatedByAutowired_WhenSpringPersonServiceIsRetrievedFromContext_ThenInstanceWillBeCreatedFromTheConstructor() {
- SpringPersonService personService = context.getBean(SpringPersonService.class);
- assertNotNull(personService);
- }
+ @Test
+ public void givenSpringPersonServiceConstructorAnnotatedByAutowired_WhenSpringPersonServiceIsRetrievedFromContext_ThenInstanceWillBeCreatedFromTheConstructor() {
+ SpringPersonService personService = context.getBean(SpringPersonService.class);
+ assertNotNull(personService);
+ }
- @Test
- public void givenPersonDaoAutowiredToSpringPersonServiceBySetterInjection_WhenSpringPersonServiceRetrievedFromContext_ThenPersonDaoInitializedByTheSetter() {
- SpringPersonService personService = context.getBean(SpringPersonService.class);
- assertNotNull(personService);
- assertNotNull(personService.getPersonDao());
- }
+ @Test
+ public void givenPersonDaoAutowiredToSpringPersonServiceBySetterInjection_WhenSpringPersonServiceRetrievedFromContext_ThenPersonDaoInitializedByTheSetter() {
+ SpringPersonService personService = context.getBean(SpringPersonService.class);
+ assertNotNull(personService);
+ assertNotNull(personService.getPersonDao());
+ }
}