ClassPathXmlApplicationContext Example

As part of org.springframework.context package spring has provided an interface called ApplicationContext. This interface inherits the properties of BeanFactory interface. Two classes provide the implementation of ApplicationContext interface. They are
  1. ClassPathXmlApplicationContext
  2. FileSystemXmlApplicationContext
The hierarchy of ApplicationContext interface is given in the below fig(a).
Points to ponder: Question: What is the difference between BeanFactory and ApplicationContext?
Answer: ApplicationContext is much the same as a BeanFactory. Both ApplicationContext and BeanFactory load bean definitions, wire beans together and dispatch beans when requested. But since ApplicationContext is a complete superset of BeanFactory, all the capabilities and behavior of BeanFactory apply to ApplicationContext. In addition ApplicationContext has the below features over BeanFactory.
  • Application context support internationalization (I18N).
  • Application context provides a generic way to load file resources, such as images.
  • Application context instantiate bean when container is started (if scope is set to "Singleton"), it doesn't wait for getBean to be called.
Below is a simple example of Spring ClassPathXmlApplicationContext.
First create an Address bean under src as shown below. File: com.ram.beans.Address.java
package com.ram.beans;

public class Address {
 private String street;
 private String city;
 private String state;
 
 public String getStreet() {
  return street;
 }
 public void setStreet(String street) {
  this.street = street;
 }
 public String getCity() {
  return city;
 }
 public void setCity(String city) {
  this.city = city;
 }
 public String getState() {
  return state;
 }
 public void setState(String state) {
  this.state = state;
 }
 
 
}

Next create applicationContext.xml file under src. The file is given below.
<?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:p="http://www.springframework.org/schema/p"
 xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
 <bean id="addr" class="com.ram.beans.Address">
  <property name="street" value="Richmond"></property>
  <property name="city" value="Melbourne"></property>
  <property name="state" value="Victoria"></property>
 </bean>
 
</beans>
Next create a main class under src as shown. File: com.ram.app.ClassPathXmlAppContextExample.java
package com.ram.app;

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

import com.ram.beans.Address;

public class ClassPathXmlAppContextExample {
 public static void main(String[] args) {
  ApplicationContext container = new ClassPathXmlApplicationContext("applicationContext.xml");
  Address address = container.getBean("addr", Address.class);
  
  System.out.println("Street = "+address.getStreet());
  System.out.println("City = "+address.getCity());
  System.out.println("State = "+address.getState());
 }
}


Execute ClassPathXmlAppContextExample.java file. Output is given below.

No comments:

Post a Comment