Spring IOC Container XML Config Example

In this tutorial, we will explore a simple example to demonstrate the Spring IoC (Inversion of Control) Container with XML-based configuration metadata.

Introduction

In a previous article, we discussed What is Spring IOC Container and how it works. Now, let's dive into a practical example to understand how to configure Spring beans using XML-based configuration metadata.

Ways to 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 steps to develop 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 the Spring Container

Tools and Technologies Used

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

Step 1: Create a Simple Maven Project

Create a simple Maven project using your favourite IDE and refer to the Guide to Create a Simple Maven Project.

Step 2: Project Structure

The below diagram shows a project structure for your reference:

Project Structure

Step 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>

Step 4: Configure HelloWorld Spring Beans

What is a Spring Bean?

A Spring bean is a Java object that is managed by the Spring container.

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, configure the HelloWorld class as a 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.xsd">

    <bean id="helloWorld" class="net.javaguides.spring.ioc.HelloWorld">
        <property name="message" value="Hello World!" />
    </bean>

</beans>

Step 5: Create a Spring Container

If you have a Spring bean configuration XML file in a standalone application, you 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");
    }
}

Step 6: Retrieve Beans from the 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!

Conclusion

In this tutorial, we learned how to configure spring beans using XML-based configuration. We covered the steps to create a Maven project, add dependencies, configure beans, create a Spring container, and retrieve beans from the container.

The source code for this example is available in my GitHub repository.

Additional Resources

Comments