

{"id":20485,"date":"2018-07-09T04:00:56","date_gmt":"2018-07-09T04:00:56","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=20485"},"modified":"2018-09-15T12:27:20","modified_gmt":"2018-09-15T06:57:20","slug":"spring-dependency-injection","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/","title":{"rendered":"Spring Dependency Injection &#8211; Types of Spring DI &amp; Example"},"content":{"rendered":"<h2>1. Objective<\/h2>\n<p>In our last tutorial, we studied <a href=\"https:\/\/data-flair.training\/blogs\/spring-web-services\/\"><strong>Spring Web Services<\/strong><\/a>. Today in this Spring tutorial, we will learn about one of the important topics of <a href=\"https:\/\/data-flair.training\/blogs\/spring-framework-tutorial\/\"><strong>Spring Framework<\/strong><\/a> which is Spring Dependency Injection. Along with this, we will discuss the types of Dependency Injection in Spring Framework: Constructor-based Dependency Injection and Setter-based Dependency Injection in Spring. At last, we will also learn Spring DI Example<br \/>\nSo, let&#8217;s start Spring\u00a0Dependency Injection.<\/p>\n<div id=\"attachment_20501\" style=\"width: 1677px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-20501\" class=\"wp-image-20501 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg\" alt=\"Spring Dependency Injection - Types of Spring DI &amp;amp; Example\" width=\"1667\" height=\"872\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg 1667w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01-150x78.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1667px) 100vw, 1667px\" \/><\/a><p id=\"caption-attachment-20501\" class=\"wp-caption-text\">Spring Dependency Injection &#8211; Types of Spring DI &amp; Example<\/p><\/div>\n<h2>2. What is Spring Dependency Injection?<\/h2>\n<p>As you know every Java-based applications have few objects that work as one so as to present it like a working application. While writing a very complex Java-based application, the classes of it should be made as independent as possible of the other <a href=\"https:\/\/data-flair.training\/blogs\/class-and-object-in-java\/\"><strong>Java classes<\/strong><\/a>. So, as to increase the possibility of reuse of it. Also, with that, you can test them separately while performing unit testing. Wiring or commonly known as <em>Spring Dependency Injection<\/em> guides in sticking these classes together while keeping them independent.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/advantages-of-spring\/\">Do you know the Advantages of Spring Framework<\/a><\/strong><br \/>\nConsider an application having text editor component in which you want to add a spell checker. You try to code like:<\/p>\n<pre class=\"EnlighterJSRAW\">public class TextEditor {\r\n\u00a0\u00a0 private SpellChecker spellChecker;\r\n\u00a0\u00a0 public TextEditor() {\r\n\u00a0\u00a0\u00a0 \u00a0\u00a0spellChecker = new SpellChecker();\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p>So, the thing that is done in the code above is a creation of a dependency between a TextEditor and the SpellCheker. While doing<a href=\"https:\/\/data-flair.training\/blogs\/spring-ioc-containers\/\"> <strong>IoC Container<\/strong> <\/a>you should do something like:<\/p>\n<pre class=\"EnlighterJSRAW\">public class TextEditor {\r\n\u00a0\u00a0 private SpellChecker spellChecker;\r\n\u00a0\u00a0\u00a0\u00a0 public TextEditor(SpellChecker spellChecker) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 this.spellChecker = spellChecker;\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p>The TextEditor here shouldn\u2019t worry about the implementation of the SpellChecker. Instead, the SpellChecker should be implemented separately and should be provided to the TextEditor while doing the instantiation of the TextEditor. This process is entirely controlled by the Spring Framework.<br \/>\nNow after removing the entire control from the TextEditor and then keeping it somewhere else and the Dependency that is SpellChecker is injected into the TextEditor class via a Class Constructor. Therefore, the flow of control is being inverted by the Spring Dependency Injection as you have delegated the dependencies to some external system.<br \/>\nAnother method of injecting the dependency is via Setter methods of the class TextEditor where the SpellChecker instantiation is created. This will be used for calling the setter methods to initialize the TextEditor properties.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-bean\/\">Read about Spring Bean Definition \u2013 Spring Configuration Metadata<\/a><\/strong><\/p>\n<h2>3. Types of Dependency Injection in Spring Framework<\/h2>\n<p>The two major types of Spring Framework Dependency Injection are:<\/p>\n<h3>a. Constructor-Based Dependency Injection<\/h3>\n<p>The Constructor-based Spring Dependency Injection is attained when the class constructor is invoked by the container with the number of arguments each having a dependency on other class.<br \/>\nThe following is a working example having a class TextEditor in which dependency is injected using constructor injection:<\/p>\n<ol>\n<li>Create your project with name SpringEx and a package com.example. This should be under the src folder of your created project.<\/li>\n<li>Add the Spring Libraries that are required using the Add External JARs options.<\/li>\n<li>Define the Java files TextEditor.java, SpellChecker.java, and MainApp.java under the above-made package.<\/li>\n<li>Write the Beans.xml configuration file under the src folder.<\/li>\n<li>Finally, write code for all<a href=\"https:\/\/data-flair.training\/blogs\/java-file-class\/\"><strong> Java files<\/strong><\/a> and Bean config file and run the application as described.<\/li>\n<\/ol>\n<p><strong>Here is TextEditor.java file code:<\/strong><br \/>\n<strong>package com.example;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">public class TextEditor {\r\n\u00a0\u00a0 private SpellChecker spellChecker;\r\n\u00a0\u00a0 public TextEditor(SpellChecker spellChecker) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Inside TextEditor constructor.\" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 this.spellChecker = spellChecker;\r\n\u00a0\u00a0 }\r\n\u00a0 public void spellCheck() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 spellChecker.checkSpelling();\r\n\u00a0 }\r\n}<\/pre>\n<p><strong>Following is the code for SpellChecker.java:<\/strong><br \/>\n<strong>package com.example;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">public class SpellChecker {\r\n\u00a0\u00a0 public SpellChecker(){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Inside SpellChecker constructor.\" );\r\n\u00a0\u00a0 }\r\n\u00a0\u00a0 public void checkSpelling() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Inside checkSpelling.\" );\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong>The MainApp.java is defined as:<\/strong><br \/>\n<strong>package com.example;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">import org.springframework.context.ApplicationContext;\r\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\r\npublic class MainApp {\r\n\u00a0\u00a0 public static void main(String[] args) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 ApplicationContext context = new ClassPathXmlApplicationContext(\"Beans.xml\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 TextEditor te = (TextEditor) context.getBean(\"textEditor\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 te.spellCheck();\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong>The Bean.xml Config file is defined as:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;?xml version = \"1.0\" encoding = \"UTF-8\"?&gt;\r\n&lt;beans xmlns = \"http:\/\/www.springframework.org\/schema\/beans\"\r\n\u00a0\u00a0 xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\u00a0\u00a0 xsi:schemaLocation = \"http:\/\/www.springframework.org\/schema\/beans\r\n\u00a0\u00a0 http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\"&gt;\r\n\u00a0\u00a0 &lt;!-- Definition for textEditor bean --&gt;\r\n\u00a0\u00a0 &lt;bean id = \"textEditor\" class = \"com.example.TextEditor\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;constructor-arg ref = \"spellChecker\"\/&gt;\r\n\u00a0\u00a0 &lt;\/bean&gt;\r\n\u00a0\u00a0 &lt;!-- Definition for spellChecker bean --&gt;\r\n\u00a0\u00a0 &lt;bean id = \"spellChecker\" class = \"com.example.SpellChecker\"&gt;&lt;\/bean&gt;\r\n&lt;\/beans&gt;<\/pre>\n<p>Once you have created the files run the application for the result. If everything is working fine the following output message is achieved:<br \/>\n<strong>Output &#8211;<\/strong>Inside SpellChecker constructor.<br \/>\nInside TextEditor constructor.<br \/>\nInside checkSpelling.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-mvc-framework\/\">Have a Look Integration of MVC with Spring<\/a><\/strong><\/p>\n<h3>b. Setter Based Dependency Injection<\/h3>\n<p>The Setter Based Spring Dependency Injection, is attained by calling the setter methods on the beans after invoking no-arg constructor using the Bean container.<br \/>\nThe following is a working example having a class TextEditor in which dependency is injected using constructor injection:<\/p>\n<ol>\n<li>Create your project with name SpringEx and a package com.example. This should be under the src folder of your created project.<\/li>\n<li>Add the Spring Libraries that are required using the Add External JARs options.<\/li>\n<li>Define the Java files TextEditor.java, SpellChecker.java, and MainApp.java under the above-made package.<\/li>\n<li>Write the Beans.xml configuration file under the src folder.<\/li>\n<li>Finally, write code for all <a href=\"https:\/\/data-flair.training\/blogs\/file-handling-in-java\/\"><strong>Java files<\/strong><\/a> and Bean config file and run the application as described.<\/li>\n<\/ol>\n<p><strong>Here is TextEditor.java file code:<\/strong><br \/>\n<strong>package com.example;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">public class TextEditor {\r\n\u00a0\u00a0 private SpellChecker spellChecker;\r\n\u00a0\u00a0 \/\/ a setter method to inject the dependency.\r\n\u00a0\u00a0 public void setSpellChecker(SpellChecker spellChecker) {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Inside setSpellChecker.\" );\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 this.spellChecker = spellChecker;\r\n\u00a0\u00a0 }\r\n\u00a0\u00a0 \/\/ a getter method to return spellChecker\r\n\u00a0\u00a0 public SpellChecker getSpellChecker() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 return spellChecker;\r\n\u00a0 }\r\n\u00a0\u00a0 public void spellCheck() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 spellChecker.checkSpelling();\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong>The code for SpellChecker.java is:<\/strong><br \/>\n<strong>package com.example;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">public class SpellChecker {\r\n\u00a0\u00a0 public SpellChecker(){\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Inside SpellChecker constructor.\" );\r\n\u00a0\u00a0 }\r\n\u00a0\u00a0 public void checkSpelling() {\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 System.out.println(\"Inside checkSpelling.\" );\r\n    }\r\n}<\/pre>\n<p><strong>Following is the code for MainApp.java:<\/strong><br \/>\n<strong>package com.example;<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">import org.springframework.context.ApplicationContext;\r\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\r\npublic class MainApp {\r\n\u00a0 public static void main(String[] args) {\r\n\u00a0\u00a0\u00a0\u00a0 \u00a0ApplicationContext context = new ClassPathXmlApplicationContext(\"Beans.xml\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 TextEditor te = (TextEditor) context.getBean(\"textEditor\");\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 te.spellCheck();\r\n\u00a0\u00a0 }\r\n}<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-boot-cli\/\">Follow this link to know about Spring Boot CLI\u00a0<\/a><\/strong><br \/>\n<strong>The config file Beans.xml is defined as:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">&lt;?xml version = \"1.0\" encoding = \"UTF-8\"?&gt;\r\n&lt;beans xmlns = \"http:\/\/www.springframework.org\/schema\/beans\"\r\n\u00a0\u00a0 xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n\u00a0\u00a0 xsi:schemaLocation = \"http:\/\/www.springframework.org\/schema\/beans\r\n\u00a0\u00a0 http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\"&gt;\r\n\u00a0\u00a0 &lt;!-- Definition for textEditor bean --&gt;\r\n\u00a0\u00a0 &lt;bean id = \"textEditor\" class = \"com.example.TextEditor\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;property name = \"spellChecker\" ref = \"spellChecker\"\/&gt;\r\n\u00a0\u00a0 &lt;\/bean&gt;\r\n\u00a0\u00a0 &lt;!-- Definition for spellChecker bean --&gt;\r\n\u00a0\u00a0 &lt;bean id = \"spellChecker\" class = \"com.example.SpellChecker\"&gt;&lt;\/bean&gt;\r\n&lt;\/beans&gt;<\/pre>\n<p>Once you have created the files run the application for the result. If everything is working fine the following output message is achieved:<br \/>\n<strong>Output &#8211; <\/strong>Inside SpellChecker constructor.<br \/>\nInside TextEditor constructor.<br \/>\nInside checkSpelling.<br \/>\nSo, this was all about Spring\u00a0Dependency Injection. Hope you like our explanation.<\/p>\n<h2>4. Conclusion<\/h2>\n<p>Hence, in this Spring DI Tutorial, we studied the Spring Dependency Injection. Along with that, we discussed the types of Dependency Injections in Spring Framework. Also, working examples of both the types of Spring dependency injection was explained with the help of working example using Eclipse IDE. Furthermore, if you have any query, feel free to ask in the comment box.<br \/>\nRelated Topic-\u00a0<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-bean-life-cycle\/\">Spring Bean Life Cycle<\/a><\/strong><br \/>\n<strong><a href=\"https:\/\/docs.spring.io\/spring-boot\/docs\/current\/reference\/html\/using-boot-spring-beans-and-dependency-injection.html\">For reference<\/a><\/strong><span hidden class=\"__iawmlf-post-loop-links\" data-iawmlf-links=\"[{&quot;id&quot;:1896,&quot;href&quot;:&quot;https:\\\/\\\/docs.spring.io\\\/spring-boot\\\/docs\\\/current\\\/reference\\\/html\\\/using-boot-spring-beans-and-dependency-injection.html&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20190504124519\\\/https:\\\/\\\/docs.spring.io\\\/spring-boot\\\/docs\\\/current\\\/reference\\\/html\\\/using-boot-spring-beans-and-dependency-injection.html&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-10 07:08:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-27 07:41:20&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-10 04:47:24&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-25 04:32:35&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-27 09:09:45&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-21 20:06:36&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-21 20:06:36&quot;,&quot;http_code&quot;:200},&quot;process&quot;:&quot;done&quot;}]\"><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>1. Objective In our last tutorial, we studied Spring Web Services. Today in this Spring tutorial, we will learn about one of the important topics of Spring Framework which is Spring Dependency Injection. Along&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":20501,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[2936,3759,4354,7165,12784,13290],"class_list":["post-20485","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring","tag-constructor-based-di","tag-dependency-injection-java","tag-example-of-spring-dependency-injection","tag-inversion-of-control-in-spring","tag-setter-based-di","tag-spring-dependency-injection"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Dependency Injection - Types of Spring DI &amp; Example - DataFlair<\/title>\n<meta name=\"description\" content=\"Spring DI Tutorial- What is Spring Dependency Injection with example,Types of Dependency Injection in Spring, Constructor-based DI,Setter-based DI in Spring\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Dependency Injection - Types of Spring DI &amp; Example - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Spring DI Tutorial- What is Spring Dependency Injection with example,Types of Dependency Injection in Spring, Constructor-based DI,Setter-based DI in Spring\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-09T04:00:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-09-15T06:57:20+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1667\" \/>\n\t<meta property=\"og:image:height\" content=\"872\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Dependency Injection - Types of Spring DI &amp; Example - DataFlair","description":"Spring DI Tutorial- What is Spring Dependency Injection with example,Types of Dependency Injection in Spring, Constructor-based DI,Setter-based DI in Spring","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/","og_locale":"en_US","og_type":"article","og_title":"Spring Dependency Injection - Types of Spring DI &amp; Example - DataFlair","og_description":"Spring DI Tutorial- What is Spring Dependency Injection with example,Types of Dependency Injection in Spring, Constructor-based DI,Setter-based DI in Spring","og_url":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-07-09T04:00:56+00:00","article_modified_time":"2018-09-15T06:57:20+00:00","og_image":[{"width":1667,"height":872,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg","type":"image\/jpeg"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"Spring Dependency Injection &#8211; Types of Spring DI &amp; Example","datePublished":"2018-07-09T04:00:56+00:00","dateModified":"2018-09-15T06:57:20+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/"},"wordCount":891,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg","keywords":["Constructor-based DI","dependency injection java","Example of Spring Dependency Injection","inversion of control in spring","Setter-based DI","Spring Dependency Injection"],"articleSection":["Spring Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/","url":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/","name":"Spring Dependency Injection - Types of Spring DI &amp; Example - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg","datePublished":"2018-07-09T04:00:56+00:00","dateModified":"2018-09-15T06:57:20+00:00","description":"Spring DI Tutorial- What is Spring Dependency Injection with example,Types of Dependency Injection in Spring, Constructor-based DI,Setter-based DI in Spring","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Dependency-Injection-01.jpg","width":1667,"height":872,"caption":"Spring Dependency Injection - Types of Spring DI &amp; Example"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Reading data from external files","item":"https:\/\/data-flair.training\/blogs\/tag\/reading-data-from-external-files\/"},{"@type":"ListItem","position":3,"name":"Spring Dependency Injection &#8211; Types of Spring DI &amp; Example"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/20485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=20485"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/20485\/revisions"}],"predecessor-version":[{"id":32635,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/20485\/revisions\/32635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/20501"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=20485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=20485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=20485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}