In this post, We will learn about Annotation-based Configuration in Spring Framework with an Example
In Spring Framework, We can use an annotation-based configuration instead of using XML config for defining the beans wiring, We have an option to move the beans configuration into component class. This can be done by using annotations on the component class, method, or field declaration. One thing you should keep in mind that before performing XML injection annotation injection is performed so the latter one(annotation based) will override the former configuration(XML configuration).
In Spring Framework annotation wiring is not enabled by default so We need to enable it before we can use the Spring annotation-based wiring in the Spring Configuration file.
pom.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.kkhindigyan.org</groupId> <artifactId>SpringAnnotationBasedConfigurationExample</artifactId> <version>0.0.1-SNAPSHOT</version> <properties> <org.springframework.version>5.2.13.RELEASE</org.springframework.version> </properties> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework.version}</version> </dependency> </dependencies> </project> |
Message.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
package com.kkhindigyan.model; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; @Component public class Message { @Value(value = "101") private Integer messageId; @Value(value = "Welcome to Spring Framework!!") private String message; public Integer getMessageId() { return messageId; } public void setMessageId(Integer messageId) { this.messageId = messageId; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } } |
ApplicationContext.xml
Consider the following configuration file in case we want to use any annotation in our Spring application then we need to enable it using the following XML tags
Once We add
<context:annotation-config/>
or
<context:component-scan base-package=”com.kkhindigyan.model”></context:component-scan>
in our XML config afterward, We can start annotating our code to indicate that Spring should automatically wire values into properties, methods, and constructors.
ApplicationContext.xml
1 2 3 4 5 6 7 8 9 10 11 |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.kkhindigyan.model"></context:component-scan> </beans> |
ClientTest.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package com.kkhindigyan.org; import org.springframework.context.ApplicationContext; import org.springframework.context.support.AbstractApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.kkhindigyan.model.Message; public class ClientTest { public static void main(String[] args) { ApplicationContext applicationContext = null; try { //Creating Instance of ApplicationContext Spring Container applicationContext = new ClassPathXmlApplicationContext("ApplicationContext.xml"); //Asking Spring Container to return Spring bean with id "message" Object object = applicationContext.getBean("message"); //Covert Spring bean into your business Object Message message = (Message)object; //Print Spring bean state System.out.println(message.getMessageId()+"\t"+message.getMessage()); } catch (Exception e) { e.printStackTrace(); }finally { if (applicationContext != null) ((AbstractApplicationContext) applicationContext).close(); } } } |
If you run ClientTest.java as Java Application then it will give the below output:
101 Welcome to Spring Framework!!
That’s all about Annotation based Configuration in Spring Framework Example
You May Also Like:
Spring BeanFactory Container Example
Spring ApplicationContext Container Example
Spring Java-based Configuration Example
Spring Setter Dependency Injection Example
Spring @Autowired Annotation With Setter Injection Example
Spring Constructor based Dependency Injection Example
Spring @Autowired Annotation With Constructor Injection Example
Spring Autowiring byName & byType Example
getBean() overloaded methods in Spring Framework
Spring Inner bean example
Spring Dependency Injection with Factory Method
Spring Framework @Qualifier example
Injecting Collections in Spring Framework Example
Spring Bean Definition Inheritance Example
Spring bean scopes with example
Spring JSR-250 Annotations with Example
Spring BeanPostProcessor Example
Spring JDBC Integration Example
Spring JDBC Annotation Example
Spring with Jdbc java based configuration example
Spring JDBC NamedParameterJdbcTemplate Example
How to call stored procedures in the Spring Framework?
If you have any feedback or suggestion please feel free to drop in below comment box.