Calling Constructor in Spring

Posted: March 19, 2012 in Java Posts
Tags: , , , , ,

Constructor (video game)

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>
CompanyName” value=”Roseindia.net”/>
<!–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.
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"?>
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)

Download source code

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s