Spring IOC Container XML Config Example

In a previous article, we discussed What is Spring IOC Container and how it works, Now in this article, we will discuss a simple example to demonstrate Spring IOC Container with XML-based configuration metadata.

Three ways we can supply Configuration Metadata to the Spring IoC container:
  1. XML-based configuration
  2. Annotation-based configuration
  3. Java-based configuration

Spring IOC Container XML Config Example

In this example, we will supply XML-based configuration metadata to the Spring IoC container.

Development Steps

Follow these three steps to developing a spring application:
  1. Create a simple Maven Project
  2. Add Maven Dependencies
  3. Configure HelloWorld Spring Beans
  4. Create a Spring Container
  5. Retrieve Beans from Spring Container

Tools and technologies used

  • Spring Framework - 6.0.6
  • JDK - 17 or later
  • Maven - 3.2+
  • IDE - Eclipse Mars/STS

1. Create a simple Maven Project

Create a simple maven project using your favorite IDE and refer below diagram for the packaging structure. If you are new to maven then read this article How to Create a Simple Maven Project.

2. Project Structure

The below diagram shows a project structure for your reference - 

3. Add Maven Dependencies

Add the following content to the pom.xml file:
<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>net.javaguides.spring</groupId>
	<artifactId>spring-ioc-example</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<properties>
		<maven.compiler.target>17</maven.compiler.target>
		<maven.compiler.source>17</maven.compiler.source>
	</properties>
	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>6.0.6</version>
		</dependency>
	</dependencies>
</project>

4. Configure HelloWorld Spring Beans

What is a Spring Bean?

This is a very simple question that is often overcomplicated. Usually, Spring beans are Java objects that are managed by the Spring container.

Let's create a HelloWorld Java class with the following content:
package net.javaguides.spring.ioc;

public class HelloWorld {
    private String message;

    public void setMessage(String message) {
        this.message = message;
    }

    public void getMessage() {
        System.out.println("My Message : " + message);
    }
}

Next, Let's configure the HelloWorld class as Spring bean using XML-based configuration:
<?xml version = "1.0" encoding = "UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
   
    <bean id="helloWorld" class="net.javaguides.spring.ioc.HelloWorld">
        <property name="message" value="Hello World!" />
    </bean>
</beans>

5. Create a Spring Container

If we have a spring bean configuration XML file in a standalone application, then we can use ClassPathXmlApplicationContext class to load the file and get the container object.
package net.javaguides.spring.ioc;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Application {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    }
}

6. Retrieve Beans from Spring Container

The ApplicationContext interface provides the getBean() method to retrieve the bean from the spring container.
package net.javaguides.spring.ioc;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Application {
    public static void main(String[] args) {
        ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
        obj.getMessage();
    }
}

Output

My Message : Hello World!
The source code of this example is available on my GitHub repository https://github.com/RameshMF/spring-core-tutorial

Comments