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
- ClassPathXmlApplicationContext
- FileSystemXmlApplicationContext
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.
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());
}
}

No comments:
Post a Comment