

{"id":21066,"date":"2018-07-14T04:05:19","date_gmt":"2018-07-14T04:05:19","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=21066"},"modified":"2019-08-05T11:28:30","modified_gmt":"2019-08-05T05:58:30","slug":"spring-annotation","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/spring-annotation\/","title":{"rendered":"Spring Annotation Based Configuration &#8211; Types with Example"},"content":{"rendered":"<h2>1. Objective<\/h2>\n<p>In our last tutorial, we discussed<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-dependency-injection\/\">\u00a0Spring Dependency Injection<\/a><\/strong>.\u00a0Here in this Spring Annotation tutorial, we will learn about annotation-based configuration in<a href=\"https:\/\/data-flair.training\/blogs\/spring-framework-tutorial\/\"><strong> Spring framework<\/strong> <\/a>and how Spring Annotation is implemented. It was Spring 2.5 after which the configuring of DI using annotations as possible. Atlast, we will discuss Spring Annotation Example using Eclipse IDE in place.<br \/>\nSo, let&#8217;s start the Spring Annotation Tutorial.<\/p>\n<div id=\"attachment_21075\" style=\"width: 1210px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-21075\" class=\"wp-image-21075 size-full\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg\" alt=\"Spring Annotation Based Configuration - Types with Example\" width=\"1200\" height=\"628\" srcset=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg 1200w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01-150x79.jpg 150w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01-300x157.jpg 300w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01-768x402.jpg 768w, https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01-1024x536.jpg 1024w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/a><p id=\"caption-attachment-21075\" class=\"wp-caption-text\">Spring Annotation Based Configuration &#8211; Types with Example<\/p><\/div>\n<h2>2. What is Spring Annotation Based Configuration?<\/h2>\n<p>In Spring Framework annotation-based configuration instead of using XML for describing the bean wiring, you have the choice to move the bean configuration into component class. It is done by using annotations on the relevant class, method or the field declaration. Before performing XML, injection annotation injection is performed. Therefore, the latter one will override the former configuration for the properties.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-beans-autowiring\/\">Read More about\u00a0Spring Beans Autowiring Eclipse IDE Example<\/a><\/strong><br \/>\nBy default, Spring annotation wiring is not turned on in Spring Framework. Therefore, you need to enable it before you can use the Spring annotation-based wiring in the Spring Configuration file. Below is the configuration file in case you want to use annotation in your application:<\/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      xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n      xmlns:context = \"http:\/\/www.springframework.org\/schema\/context\"\r\n      xsi:schemaLocation = \"http:\/\/www.springframework.org\/schema\/beans\r\n      http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\r\n      http:\/\/www.springframework.org\/schema\/context\r\n      http:\/\/www.springframework.org\/schema\/context\/spring-context-3.0.xsd\"&gt;\r\n      &lt;context:annotation-config\/&gt;\r\n      &lt;!-- bean definitions go here --&gt;\r\n&lt;\/beans&gt;<\/pre>\n<p>Once the tag <strong>&lt;context:annotation-config\/&gt;<\/strong> is configured you have the authority to start annotating your code. It will indicate that the Spring should automatically wire the values into properties methods and constructors.<\/p>\n<h2>3. Spring Annotation List<\/h2>\n<p>Here, we discussed some of the important Spring annotations:<\/p>\n<ul>\n<li><strong>@Required:<\/strong> It is applicable to bean property setter methods.<\/li>\n<li><strong>@Autowired:<\/strong> It is only applied to the bean property setter methods, constructors, non-setter methods and properties.<\/li>\n<li><strong>@Qualifier:<\/strong> This Spring Framework annotation along with the @Autowired is used for removing the confusion by specifying the exact bean to wire.<\/li>\n<li><strong>JSR-250 Annotations:<\/strong> These Spring annotations are supported by Spring Framework including @Resource, @PreDestroy and @PostConstruct annotations. These annotations are not really required as you already have the alternatives.<\/li>\n<\/ul>\n<h3>a. @Required Annotation in Spring<\/h3>\n<p>Spring @Required annotation is applicable to bean property setter methods. It indicates that the affected bean property must be populated in the XML config file at the time of configuration.<br \/>\nLet\u2019s define a working example of\u00a0@Required Spring annotation using Eclipse IDE having the following steps:<br \/>\nCreate your project with name SpringEx and a package com.example. This should be under the src folder of your created project.<\/p>\n<ul>\n<li>Add the Spring Libraries that are required using the Add External JARs options.<\/li>\n<li>Create Student.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\u00a0<strong><a href=\"https:\/\/data-flair.training\/blogs\/java-file-class\/\">Java files<\/a><\/strong> and Bean config file and run the application as described.<\/li>\n<\/ul>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/beanpostprocessors\/\">Let&#8217;s discuss Spring BeanPostProcessors &#8211; Latest Tutorial 2018<\/a><\/strong><br \/>\n<strong>The code for Student.java file:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\nimport org.springframework.beans.factory.annotation.Required;\r\npublic class Student {\r\n     private Integer age;\r\n     private String name;\r\n@Required\r\npublic void setAge(Integer age) {\r\n     this.age = age;\r\n}\r\npublic Integer getAge() {\r\n     return age;\r\n}\r\n@Required\r\npublic void setName(String name) {\r\n     this.name = name;\r\n}\r\npublic String getName() {\r\n      return name;\r\n  }\r\n}<\/pre>\n<p><strong>Following is the code for MainApp.java file:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\nimport org.springframework.context.ApplicationContext;\r\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\r\npublic class MainApp {\r\n    public static void main(String[] args) {\r\n       ApplicationContext context = new\r\nClassPathXmlApplicationContext(\"Beans.xml\");\r\n       Student student = (Student) context.getBean(\"student\");\r\n       System.out.println(\"Name : \" + student.getName() );\r\n       System.out.println(\"Age : \" + student.getAge() );\r\n   }\r\n}<\/pre>\n<p><strong>The content for the configuration file Beans.xml is as defined:<\/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     xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n     xmlns:context = \"http:\/\/www.springframework.org\/schema\/context\"\r\n     xsi:schemaLocation = \"http:\/\/www.springframework.org\/schema\/beans\r\n     http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\r\n     http:\/\/www.springframework.org\/schema\/context\r\n     http:\/\/www.springframework.org\/schema\/context\/spring-context-3.0.xsd\"&gt;\r\n&lt;context:annotation-config\/&gt;\r\n&lt;!-- Definition for student bean --&gt;\r\n&lt;bean id = \"student\" class = \"com.example.Student\"&gt;\r\n       &lt;property name = \"name\" value = \"Hari\" \/&gt;\r\n       &lt;property name = \"age\" value = \"11\"\/&gt;\r\n     &lt;\/bean&gt;\r\n &lt;\/beans&gt;\r\n<\/pre>\n<p>The above example will produce the following message as output:<br \/>\n<strong>Name: Hari<\/strong><br \/>\n<strong>Age: 11<\/strong><\/p>\n<h3>b. @Autowired Annotation in Spring<\/h3>\n<p>The Spring @Autowired annotation gives you more fine-grained control over how and where the autowiring of it should be accomplished. Similar to the @Required annotation this Spring annotation can also be used for autowiring the bean on the setter method. You have the power of using the @Autowired annotation on setter methods to get rid of the &lt;property&gt; in the XML.<br \/>\n<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-bean-life-cycle\/\">Read about Spring Bean Life Cycle \u2013 Initialization and Destruction<\/a> <\/strong><br \/>\nLet\u2019s define a working example of@Autowired Spring annotation using Eclipse IDE having the following steps:<\/p>\n<ul>\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>Create TextEditor.java, MainApp.java, and SpellChecker.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<\/ul>\n<p><strong>The code for the java file TextEditor:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\npublic class TextEditor {\r\n    private SpellChecker spellChecker;\r\n    @Autowired\r\npublic void setSpellChecker( SpellChecker spellChecker ){\r\n       this.spellChecker = spellChecker;\r\n }\r\npublic SpellChecker getSpellChecker( ) {\r\n   return spellChecker;\r\n}\r\npublic void spellCheck() {\r\n      spellChecker.checkSpelling();\r\n   }\r\n}<\/pre>\n<p><strong>The content of SpellChecker.java:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\npublic class SpellChecker {\r\n   public SpellChecker(){\r\n     System.out.println(\"Inside SpellChecker constructor.\" );\r\n}\r\npublic void checkSpelling(){\r\n    System.out.println(\"Inside checkSpelling.\" );\r\n  }\r\n}<\/pre>\n<p><strong>The java file MainApp.java is as defined:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\nimport org.springframework.context.ApplicationContext;\r\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\r\npublic class MainApp {\r\npublic static void main(String[] args) {\r\nApplicationContext context = new ClassPathXmlApplicationContext(\"Beans.xml\");\r\nTextEditor te = (TextEditor) context.getBean(\"textEditor\");\r\nte.spellCheck();\r\n}\r\n}<\/pre>\n<p><strong>The Bean.xml configuration file is as follows:<\/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       xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n       xmlns:context=\"http:\/\/www.springframework.org\/schema\/context\"\r\n       xsi:schemaLocation=\"http:\/\/www.springframework.org\/schema\/beans\r\n       http:\/\/www.springframework.org\/schema\/beans\/spring-beans.xsd\r\n       http:\/\/www.springframework.org\/schema\/context\r\n       http:\/\/www.springframework.org\/schema\/context\/spring-context.xsd\"&gt;\r\n       &lt;context:annotation-config\/&gt;\r\n       &lt;!-- Definition for textEditor bean without constructor-arg --&gt;\r\n       &lt;bean id=\"textEditor\" class=\"com.example.TextEditor\"&gt;&lt;\/bean&gt;\r\n       &lt;!-- Definition for spellChecker bean --&gt;\r\n       &lt;bean id=\"spellChecker\" class=\"com.example.SpellChecker\"&gt;&lt;\/bean&gt;\r\n&lt;\/beans&gt;<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-java-based-configuration\/\">Do you know Spring Java Based Configuration &#8211; How to Configure Spring Beans<\/a><\/strong><br \/>\nOnce you are done with these then run the application. You will see the following as the message as output:<br \/>\n<strong>Inside SpellChecker constructor.<\/strong><br \/>\n<strong>Inside checkSpelling.<\/strong><\/p>\n<h3>c. @Qualifier Annotation in Spring<\/h3>\n<p>There will be a situation where you will create more than one bean of the same type. But you will want to wire only one of them with the property. For those cases, you have to use @Qualifier annotation in Spring with @Autowired so as to remove the confusion by specifying the bean for wiring.<br \/>\nLet\u2019s define a working example of @Qualifier Spring annotation using Eclipse IDE having the following steps:<\/p>\n<ul>\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>Create Student.java, MainApp.java, and Profile.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\/jar-file-in-java\/\"><strong> Java files<\/strong><\/a> and Bean config file and run the application as described.<\/li>\n<\/ul>\n<p><strong>The code for Student.java:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\npublic class Student {\r\n     private Integer age;\r\n     private String name;\r\npublic void setAge(Integer age) {\r\n     this.age = age;\r\n}\r\npublic Integer getAge() {\r\n     return age;\r\n}\r\npublic void setName(String name) {\r\n     this.name = name;\r\n}\r\npublic String getName() {\r\n     return name;\r\n   }\r\n}<\/pre>\n<p><strong>The content for java file Profile:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.beans.factory.annotation.Qualifier;\r\npublic class Profile {\r\n      @Autowired\r\n      @Qualifier(\"student1\")\r\n      private Student student;\r\n      public Profile(){\r\n            System.out.println(\"Inside Profile constructor.\" );\r\n}\r\npublic void printAge() {\r\n      System.out.println(\"Age : \" + student.getAge() );\r\n}\r\npublic void printName() {\r\n      System.out.println(\"Name : \" + student.getName() );\r\n   }\r\n}<\/pre>\n<p><strong>The MainApp.java is as defined:<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\">package com.example;\r\nimport org.springframework.context.ApplicationContext;\r\nimport org.springframework.context.support.ClassPathXmlApplicationContext;\r\npublic class MainApp {\r\n     public static void main(String[] args) {\r\n          ApplicationContext context = new ClassPathXmlApplicationContext(\"Beans.xml\");\r\n          Profile profile = (Profile) context.getBean(\"profile\");\r\n          profile.printAge();\r\n          profile.printName();\r\n        }\r\n  }<\/pre>\n<p><strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-mvc-framework\/\">Let&#8217;s see Spring MVC Framework &#8211; Integration of MVC with Spring<\/a><\/strong><br \/>\n<strong>The Beans.xml is as follows:<\/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      xmlns:xsi = \"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"\r\n      xmlns:context = \"http:\/\/www.springframework.org\/schema\/context\"\r\n      xsi:schemaLocation = \"http:\/\/www.springframework.org\/schema\/beans\r\n      http:\/\/www.springframework.org\/schema\/beans\/spring-beans-3.0.xsd\r\n      http:\/\/www.springframework.org\/schema\/context\r\n      http:\/\/www.springframework.org\/schema\/context\/spring-context-3.0.xsd\"&gt;\r\n      &lt;context:annotation-config\/&gt;\r\n      &lt;!-- Definition for profile bean --&gt;\r\n      &lt;bean id = \"profile\" class = \"com.example.Profile\"&gt;&lt;\/bean&gt;\r\n      &lt;!-- Definition for student1 bean --&gt;\r\n      &lt;bean id = \"student1\" class = \"com.example.Student\"&gt;\r\n            &lt;property name = \"name\" value = \"Hari\" \/&gt;\r\n            &lt;property name = \"age\" value = \"11\"\/&gt;\r\n       &lt;\/bean&gt;\r\n&lt;!-- Definition for student2 bean --&gt;\r\n&lt;bean id = \"student2\" class = \"com.example.Student\"&gt;\r\n            &lt;property name = \"name\" value = \"Nuha\" \/&gt;\r\n            &lt;property name = \"age\" value = \"2\"\/&gt;\r\n      &lt;\/bean&gt;\r\n&lt;\/beans&gt;<\/pre>\n<p>Once you are done creating the above files run the application. The following message will be displayed as output:<br \/>\n<strong>Inside Profile constructor.<\/strong><br \/>\n<strong>Age: 11<\/strong><br \/>\n<strong>Name: Hari<\/strong><br \/>\nSo, this was all about <a href=\"https:\/\/spring.io\/\">Spring<\/a> Annotation Tutorial. Hope you like our explanation.<\/p>\n<h2>4. Conclusion<\/h2>\n<p>Hence, in this Spring Annotation Tutorial, we discussed what is an annotation in Spring Framework. In addition, we saw the types of Spring annotation configurations and how to configure them. Along with that you saw the working examples with Eclipse IDE in place for each of the annotations. Furthermore, if you have any query regarding Spring Annotation, feel free to ask in the comment section.<br \/>\nSee Also &#8211;\u00a0<strong><a href=\"https:\/\/data-flair.training\/blogs\/spring-boot-cli\/\">Spring Boot CLI <\/a><\/strong><span hidden class=\"__iawmlf-post-loop-links\" data-iawmlf-links=\"[{&quot;id&quot;:1823,&quot;href&quot;:&quot;https:\\\/\\\/spring.io&quot;,&quot;archived_href&quot;:&quot;http:\\\/\\\/web-wp.archive.org\\\/web\\\/20251002190622\\\/https:\\\/\\\/spring.io\\\/&quot;,&quot;redirect_href&quot;:&quot;&quot;,&quot;checks&quot;:[{&quot;date&quot;:&quot;2025-12-10 03:27:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-14 02:20:54&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-19 19:26:33&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-23 10:28:39&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2025-12-30 06:58:20&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-03 06:23:46&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-09 18:01:40&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-13 03:12:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-22 11:21:37&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-25 13:38:41&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-01-29 05:56:23&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-02 09:35:13&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-05 15:52:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-09 03:56:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-12 07:31:04&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-16 18:55:17&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-20 13:47:00&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-24 10:07:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-02-27 11:28:19&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-03 07:26:48&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-08 10:36:29&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-12 10:58:48&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-17 02:45:18&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-20 11:19:10&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-25 07:42:07&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-03-30 15:23:01&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-04 14:58:28&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-07 23:24:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-11 11:15:40&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-15 18:23:31&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-19 05:32:13&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-25 00:03:24&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-04-28 03:59:45&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-01 09:08:26&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-04 14:32:30&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-10 13:42:16&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-14 21:00:18&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-19 09:20:49&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-24 07:42:05&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-27 09:18:06&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-05-30 11:17:06&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-02 19:01:27&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-09 06:12:11&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-12 11:09:55&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-15 14:25:55&quot;,&quot;http_code&quot;:200},{&quot;date&quot;:&quot;2026-06-19 04:41:54&quot;,&quot;http_code&quot;:200}],&quot;broken&quot;:false,&quot;last_checked&quot;:{&quot;date&quot;:&quot;2026-06-19 04:41:54&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 discussed\u00a0Spring Dependency Injection.\u00a0Here in this Spring Annotation tutorial, we will learn about annotation-based configuration in Spring framework and how Spring Annotation is implemented. It was Spring 2.5&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":21075,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[64],"tags":[710,713,13216,13217,13218,13222,13270,13311],"class_list":["post-21066","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-spring","tag-annotation-in-spring-framework","tag-annotations-in-spring-mvc","tag-spring-annotation","tag-spring-annotation-tutorial","tag-spring-annotations-cheat-sheet","tag-spring-annotations-pdf","tag-spring-boot-annotations","tag-spring-framework-annotation"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spring Annotation Based Configuration - Types with Example - DataFlair<\/title>\n<meta name=\"description\" content=\"Spring Annotation Based Configuration-What is Annotation in Spring Framework,Spring annotations list: @Required,@Autowired, @Qualifier annotations 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-annotation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spring Annotation Based Configuration - Types with Example - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Spring Annotation Based Configuration-What is Annotation in Spring Framework,Spring annotations list: @Required,@Autowired, @Qualifier annotations in Spring\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/spring-annotation\/\" \/>\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-14T04:05:19+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-05T05:58:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\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=\"9 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spring Annotation Based Configuration - Types with Example - DataFlair","description":"Spring Annotation Based Configuration-What is Annotation in Spring Framework,Spring annotations list: @Required,@Autowired, @Qualifier annotations 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-annotation\/","og_locale":"en_US","og_type":"article","og_title":"Spring Annotation Based Configuration - Types with Example - DataFlair","og_description":"Spring Annotation Based Configuration-What is Annotation in Spring Framework,Spring annotations list: @Required,@Autowired, @Qualifier annotations in Spring","og_url":"https:\/\/data-flair.training\/blogs\/spring-annotation\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2018-07-14T04:05:19+00:00","article_modified_time":"2019-08-05T05:58:30+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-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":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"Spring Annotation Based Configuration &#8211; Types with Example","datePublished":"2018-07-14T04:05:19+00:00","dateModified":"2019-08-05T05:58:30+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/"},"wordCount":1030,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg","keywords":["Annotation in Spring Framework","annotations in spring mvc","Spring Annotation","Spring Annotation Tutorial","spring annotations cheat sheet","spring annotations pdf","spring boot annotations","Spring Framework Annotation"],"articleSection":["Spring Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/spring-annotation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/","url":"https:\/\/data-flair.training\/blogs\/spring-annotation\/","name":"Spring Annotation Based Configuration - Types with Example - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg","datePublished":"2018-07-14T04:05:19+00:00","dateModified":"2019-08-05T05:58:30+00:00","description":"Spring Annotation Based Configuration-What is Annotation in Spring Framework,Spring annotations list: @Required,@Autowired, @Qualifier annotations in Spring","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/spring-annotation\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2018\/07\/Spring-Annotation-Based-Configuration-01.jpg","width":1200,"height":628,"caption":"Spring Annotation Based Configuration - Types with Example"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/spring-annotation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Spring Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/spring\/"},{"@type":"ListItem","position":3,"name":"Spring Annotation Based Configuration &#8211; Types with 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\/21066","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=21066"}],"version-history":[{"count":5,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/21066\/revisions"}],"predecessor-version":[{"id":66872,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/21066\/revisions\/66872"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/21075"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=21066"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=21066"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=21066"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}