Thursday, 24 May 2018

How to use FileSystemXmlApplicationContext? | Spring Tutorial | Spring basics | Spring Framework

Enjoying this Java & Spring tutorial?

Subscribe to Ram N Java on YouTube

Introduction

In Spring applications, the IoC (Inversion of Control) container manages bean creation, wiring, and lifecycle. While ClassPathXmlApplicationContext loads XML definitions directly from the project's classpath, FileSystemXmlApplicationContext allows you to load Spring XML configuration files from the local file system using absolute or relative paths.

In this guide, you will learn how to configure Spring XML files and bootstrap the Spring IoC container using FileSystemXmlApplicationContext in Java.

1. Create the Java Bean Class

Start by creating a standard Java POJO class (for example, HelloWorld) with a message property and a greeting method:

public class HelloWorld {
    private String message;

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

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

2. Define Spring XML Configuration (applicationContext.xml)

Create your Spring XML configuration file in a specific file system directory or project root directory and declare your bean definition:

<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="helloWorldBean" class="HelloWorld">
        <property name="message" value="Hello from FileSystemXmlApplicationContext!" />
    </bean>

</beans>
  

3. Load Context Using FileSystemXmlApplicationContext

Instantiate FileSystemXmlApplicationContext by passing the file system path (relative or absolute) of your XML configuration, retrieve the bean, and execute the method:

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

public class App {
    public static void main(String[] args) {
        // Load the Spring XML configuration from file system path
        ApplicationContext context = new FileSystemXmlApplicationContext("src/main/resources/applicationContext.xml");

        // Retrieve the bean from the IoC container
        HelloWorld hello = (HelloWorld) context.getBean("helloWorldBean");

        // Call the method
        hello.sayHello();
    }
}
  

Watch More Spring Tutorials


Click here to watch on Youtube:
https://www.youtube.com/watch?v=YKI0ssG-3tQ&list=UUhwKlOVR041tngjerWxVccw

pom.xml

<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%20http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.ram.core</groupId>
    <artifactId>SpringDemo</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>SpringDemo</name>
    <url>http://maven.apache.org</url>

    <properties>
        <spring.version>5.0.2.RELEASE</spring.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <!-- Spring 5 dependencies -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</project>

Employee.java

package com.ram.model;

/**
 * Spring bean
 *
 */

public class Employee
{
    private String name;

    public void setName(String name)
    {
        this.name = name;
    }

    public void employeeDetails()
    {
        System.out.println("Employee Name =  " + name);
    }
}

applicationContext.xml

<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-4.3.xsd">


    <bean id="employee" class="com.ram.model.Employee">
        <property name="name" value="Peter" />
    </bean>

</beans>

App.java

package com.ram.core;

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

import com.ram.model.Employee;

public class App
{
    public static void main(String[] args)
    {
        /*
         * Create a new FileSystemXmlApplicationContext, loading the
         * definitions from the given XML file and automatically
         * refreshing the context.
         *
         * Parameters:
         *
         * configLocation - file path
         */

        ApplicationContext context = new FileSystemXmlApplicationContext(
                "D:\\eclipse\\workspace\\SpringDemo\\src\\main\\resources\\applicationContext.xml");

        System.out.println("---------------------------------------");

        Employee employee = context.getBean("employee", Employee.class);
        System.out.println(
                "Got employee object from the ApplicationContext(Spring Container)");
        employee.employeeDetails();

    }

}

Output.txt

Apr 09, 2018 8:16:54 AM org.springframework.context.support.AbstractApplicationContext prepareRefresh
INFO: Refreshing org.springframework.context.support.FileSystemXmlApplicationContext@2096442d: startup date [Mon Apr 09 08:16:54 IST 2018]; root of context hierarchy
Apr 09, 2018 8:16:56 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from file [D:\eclipse\workspace\SpringDemo\src\main\resources\applicationContext.xml]
---------------------------------------
Got employee object from the ApplicationContext(Spring Container)
Employee Name =  Peter

Click the below link to download the code:
https://sites.google.com/site/ramj2eev2/java_basics/SpringDemo_FileSystemXmlApplicationContext.zip?attredirects=0&d=1

Github Link:
https://github.com/ramram43210/javaee/tree/master/Spring_2018/SpringDemo_FileSystemXmlApplicationContext

Bitbucket Link:
https://bitbucket.org/ramram43210/spring/src/a1d5b66cf948298a0bb7c33e9b2c0967275f5a95/Spring_2018/SpringDemo_FileSystemXmlApplicationContext/?at=master

See also:

  • All JavaEE Videos Playlist
  • All JavaEE Videos
  • All JAVA EE Links
  • Spring Tutorial
  • Servlets Tutorial
  • All Design Patterns Links
  • JDBC Tutorial
  • Java Collection Framework Tutorial
  • JAVA Tutorial
  • Kids Tutorial
  • Cooking Tutorial
  • 1 comment:

    Tutorials