From 3539c9900a8ffabd26dce62e44ac812c8751ccda Mon Sep 17 00:00:00 2001 From: Justin Albano Date: Mon, 9 Dec 2019 21:54:17 -0500 Subject: [PATCH] BAEL-3290: Basic injection added --- .../baeldung/dependency/ioc/AppConfig.java | 23 +++++++++++++ .../com/baeldung/dependency/ioc/Item.java | 5 +++ .../baeldung/dependency/ioc/ItemImpl1.java | 5 +++ .../com/baeldung/dependency/ioc/Store.java | 23 +++++++++++++ spring-di/src/main/resources/ioc-context.xml | 33 +++++++++++++++++++ .../dependency/ioc/XmlAppConfigTest.java | 24 ++++++++++++++ 6 files changed, 113 insertions(+) create mode 100644 spring-di/src/main/java/com/baeldung/dependency/ioc/AppConfig.java create mode 100644 spring-di/src/main/java/com/baeldung/dependency/ioc/Item.java create mode 100644 spring-di/src/main/java/com/baeldung/dependency/ioc/ItemImpl1.java create mode 100644 spring-di/src/main/java/com/baeldung/dependency/ioc/Store.java create mode 100644 spring-di/src/main/resources/ioc-context.xml create mode 100644 spring-di/src/test/java/com/baeldung/dependency/ioc/XmlAppConfigTest.java diff --git a/spring-di/src/main/java/com/baeldung/dependency/ioc/AppConfig.java b/spring-di/src/main/java/com/baeldung/dependency/ioc/AppConfig.java new file mode 100644 index 0000000000..9eb668df6c --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/dependency/ioc/AppConfig.java @@ -0,0 +1,23 @@ +package com.baeldung.dependency.ioc; + +import org.springframework.context.annotation.Bean; + +public class AppConfig { + + @Bean + public Item item1() { + return new ItemImpl1(); + } + + @Bean + public Store storeThroughConstructorInjection() { + return new Store(item1()); + } + + @Bean + public Store storeThroughSetterInjection() { + Store store = new Store(); + store.setItem(item1()); + return store; + } +} diff --git a/spring-di/src/main/java/com/baeldung/dependency/ioc/Item.java b/spring-di/src/main/java/com/baeldung/dependency/ioc/Item.java new file mode 100644 index 0000000000..107560514f --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/dependency/ioc/Item.java @@ -0,0 +1,5 @@ +package com.baeldung.dependency.ioc; + +public interface Item { + +} diff --git a/spring-di/src/main/java/com/baeldung/dependency/ioc/ItemImpl1.java b/spring-di/src/main/java/com/baeldung/dependency/ioc/ItemImpl1.java new file mode 100644 index 0000000000..877ccecb0a --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/dependency/ioc/ItemImpl1.java @@ -0,0 +1,5 @@ +package com.baeldung.dependency.ioc; + +public class ItemImpl1 implements Item { + +} diff --git a/spring-di/src/main/java/com/baeldung/dependency/ioc/Store.java b/spring-di/src/main/java/com/baeldung/dependency/ioc/Store.java new file mode 100644 index 0000000000..e4ff03b30e --- /dev/null +++ b/spring-di/src/main/java/com/baeldung/dependency/ioc/Store.java @@ -0,0 +1,23 @@ +package com.baeldung.dependency.ioc; + +import org.springframework.beans.factory.annotation.Autowired; + +public class Store { + + @Autowired + private Item item; + + public Store() {} + + public Store(Item item) { + this.item = item; + } + + public Item getItem() { + return item; + } + + public void setItem(Item item) { + this.item = item; + } +} diff --git a/spring-di/src/main/resources/ioc-context.xml b/spring-di/src/main/resources/ioc-context.xml new file mode 100644 index 0000000000..df1165f557 --- /dev/null +++ b/spring-di/src/main/resources/ioc-context.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-di/src/test/java/com/baeldung/dependency/ioc/XmlAppConfigTest.java b/spring-di/src/test/java/com/baeldung/dependency/ioc/XmlAppConfigTest.java new file mode 100644 index 0000000000..c13074281f --- /dev/null +++ b/spring-di/src/test/java/com/baeldung/dependency/ioc/XmlAppConfigTest.java @@ -0,0 +1,24 @@ +package com.baeldung.dependency.ioc; + +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("classpath:/ioc-context.xml") +public class XmlAppConfigTest { + + @Autowired + @Qualifier("xml-store-by-constructor") + private Store storeByConstructorInjection; + + @Test + public void givenValidXmlConfig_WhenInjectStoreByConstructorInject_ThenBeanIsNotNull() { + assertNotNull(storeByConstructorInjection); + } +}