diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java
index dc9fa49b19..069e9df084 100644
--- a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java
+++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleFormatter.java
@@ -8,7 +8,7 @@ public class ArticleFormatter {
@SuppressWarnings("resource")
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("dependencyinjectiontypes-context.xml");
- Article article = (Article) context.getBean("articleBean");
+ ArticleWithSetterInjection article = (ArticleWithSetterInjection) context.getBean("articleWithSetterInjectionBean");
String formattedArticle = article.format("This is a text !");
System.out.print(formattedArticle);
diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithConstructorInjection.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithConstructorInjection.java
new file mode 100644
index 0000000000..776e9f4040
--- /dev/null
+++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithConstructorInjection.java
@@ -0,0 +1,17 @@
+package com.baeldung.dependencyinjectiontypes;
+
+import org.springframework.beans.factory.annotation.Autowired;
+
+public class ArticleWithConstructorInjection {
+
+ private TextFormatter formatter;
+
+ @Autowired
+ public ArticleWithConstructorInjection(TextFormatter formatter) {
+ this.formatter = formatter;
+ }
+
+ public String format(String text) {
+ return formatter.format(text);
+ }
+}
diff --git a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/Article.java b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithSetterInjection.java
similarity index 79%
rename from spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/Article.java
rename to spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithSetterInjection.java
index 921bba01fb..931c6ea276 100644
--- a/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/Article.java
+++ b/spring-core/src/main/java/com/baeldung/dependencyinjectiontypes/ArticleWithSetterInjection.java
@@ -2,11 +2,11 @@ package com.baeldung.dependencyinjectiontypes;
import org.springframework.beans.factory.annotation.Autowired;
-public class Article {
+public class ArticleWithSetterInjection {
private TextFormatter formatter;
- public Article(TextFormatter formatter) {
+ public ArticleWithSetterInjection(TextFormatter formatter) {
this.formatter = formatter;
}
diff --git a/spring-core/src/main/resources/dependencyinjectiontypes-context.xml b/spring-core/src/main/resources/dependencyinjectiontypes-context.xml
index b03d185c43..bd6b3c408d 100644
--- a/spring-core/src/main/resources/dependencyinjectiontypes-context.xml
+++ b/spring-core/src/main/resources/dependencyinjectiontypes-context.xml
@@ -6,11 +6,18 @@
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/DependencyInjectionTest.java b/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/DependencyInjectionTest.java
new file mode 100644
index 0000000000..57c1927e58
--- /dev/null
+++ b/spring-core/src/test/java/com/baeldung/dependencyinjectiontypes/DependencyInjectionTest.java
@@ -0,0 +1,35 @@
+package com.baeldung.dependencyinjectiontypes;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+public class DependencyInjectionTest {
+
+ @Test
+ public void givenAutowiredAnnotation_WhenSetOnSetter_ThenDependencyValid() {
+
+ ApplicationContext context = new ClassPathXmlApplicationContext("dependencyinjectiontypes-context.xml");
+ ArticleWithSetterInjection article = (ArticleWithSetterInjection) context.getBean("articleWithSetterInjectionBean");
+
+ String originalText = "This is a text !";
+ String formattedArticle = article.format(originalText);
+
+ assertTrue(originalText.toUpperCase().equals(formattedArticle));
+ }
+
+ @Test
+ public void givenAutowiredAnnotation_WhenSetOnConstructor_ThenDependencyValid() {
+
+ ApplicationContext context = new ClassPathXmlApplicationContext("dependencyinjectiontypes-context.xml");
+ ArticleWithConstructorInjection article = (ArticleWithConstructorInjection) context.getBean("articleWithConstructorInjectionBean");
+
+ String originalText = "This is a text !";
+ String formattedArticle = article.format(originalText);
+
+ assertTrue(originalText.toUpperCase().equals(formattedArticle));
+ }
+
+}