Friday 24 May 2013

Calling Constructor in Spring


In the given example you will be learning about a constructor and how to call a constructor in the Spring. Declaring constructor injection in the Spring framework is generally done in the bean section of the configuration file that is the context.xml file. 
Steps to declare Constructor Injection:
1)Set the constructor declaration
2)Pass the value to the constructor.
This tutorial describes the way of defining constructor in the xml document and retrieving the values defined in the constructor using java file.
<constructor-arg>  
  <util:map>
  <entry key="CompanyName" value="Roseindia.net"/>   <entry key="Address" value="Rohini"/>
  </util:map>
</constructor-arg>

<constructor-arg>:-This is the way to declare  the constructor injection consisting of arguments. The use of this injection is to tell the container that the application wants to use the Constructor Injection.
<entry key="CompanyName" value="Roseindia.net"/>:-Passing the value to the constructor is usually done through the
 <value>element. Here we have pass "Roseindia.net " as the company name.
context.xml
<?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:util="http://www.springframework.org/schema/util"
 xsi:schemaLocation="
  http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans.xsd
  http://www.springframework.org/schema/util
  http://www.springframework.org/schema/util/spring-util.xsd">

  <bean id="encyclopedia"
  name="mybean"
  class="Configure">
  <constructor-arg>
  <util:map>
  <entry key="CompanyName" value="Roseindia.net"/>
  <entry key="Address" value="Rohini"/>
  </util:map>
  </constructor-arg>
  </bean>

  <bean id="company" class="Companyinformation">
  <property name="encyclopedia" ref="mybean"/>
  </bean>
</beans>
Here is the file named Main.java through which we are retrieving the properties of the bean which we have defined in the above file i.e. context.xml

 XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("context.xml")):-Here we are creating an instance of the XmlBeanFactory which is used to read bean definition from an XML document
new ClassPathResource("context.xml"):-
Creates a new ClassPathResource for ClassLoader .Here the context.xml is the file which is to be loaded.
Main.java
import java.util.Map;

import org.springframework.beans.factory.xml.XmlBeanFactory;

import org.springframework.core.io.ClassPathResource;

import org.springframework.util.Assert;

public class Main {
  public static void main(String[] a) {
  XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("context.xml"));

  company mycomp = (company) beanFactory.getBean("company");

  System.out.println("Name of the company is: " + mycomp.Name());

  System.out.println("Address of the company is: " + mycomp.address());

  }
}

interface company {

 String Name();

 String address();
}

interface Detail {

  String find(String entry);

}

class Companyinformation implements company {

  private Detail detail;
  public String Name() {
  String name = this.detail.find("CompanyName");
  return String.valueOf(name);
  }

  public String address() {

  String add = this.detail.find("Address");

  return String.valueOf(add);

  }

  public void setEncyclopedia(Detail d) {

  this.detail = d;

  }

}

class Configure implements Detail {

  private Map map;

  public Configure(Map map) {

  Assert.notNull(map, "Arguments cannot be null.");

  this.map = map;

  }


  public String find(String s) {

  return (String) this.map.get(s);

  }

}
Output of the program
Nov 26, 2008 12:48:55 AM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [context.xml]
Name of the company is: Roseindia.net
Address of the company is: Rohini
BUILD SUCCESSFUL (total time: 1 second)


No comments:

Post a Comment

Simple CRUD in Laravel Framework

Creating, reading, updating, and deleting resources is used in pretty much every application. Laravel helps make the process easy using reso...