A simple example to demonstrate, how to provide constructor initialization to a bean using constructor-arg tag's type attribute in configuration file of Spring Framework
1. Create a normal class having constructor say 'Dog' -
2. Create a spring.xml file placed in classpath of your application -
3. Create a Test class for the application (imp) -
Output of the program :
1. Create a normal class having constructor say 'Dog' -
package com.hubberspot.spring; public class Dog { private String breed; private int teeth; // Overloaded Constructor public Dog(String breed, int teeth){ this.breed = breed; this.teeth = teeth; } // Overloaded Constructor public Dog(String breed, String teeth){ this.breed = breed; this.teeth = teeth.equals("twenty") ? 20 : 0; } public int getTeeth() { return teeth; } public void setTeeth(int teeth) { this.teeth = teeth; } public String getBreed() { return breed; } public void setBreed(String breed) { this.breed = breed; } public void move() { System.out.println("A Dog of breed "+ getBreed() +", " + "having "+ getTeeth() +" teeth moves slowly ..."); } }
2. Create a spring.xml file placed in classpath of your application -
|
3. Create a Test class for the application (imp) -
package com.hubberspot.spring; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class WildLifeApplication { public static void main(String[] args) { // ApplicationContext is a Spring interface which // provides with the configuration for an application. // It provides us with all the methods that BeanFactory // provides. It loads the file resources in a older // and generic manner. It helps us to publish events to the // listener registered to it. It also provides quick support // for internationalization. It provides us with the object // requested, it reads the configuration file and provides // us with the necessary object required. // We are using concrete implementation of ApplicationContext // here called as ClassPathXmlApplicationContext because this // bean factory reads the xml file placed in the classpath of // our application. We provide ClassPathXmlApplicationContext // with a configuration file called as spring.xml placed // at classpath of our application. ApplicationContext context = new ClassPathXmlApplicationContext(("spring.xml")); // In order to get a object instantiated for a particular bean // we call getBean() method of ClassPathXmlApplicationContext // passing it the id for which the object is to be needed. // Here getBean() returns an Object. We need to cast it back // to the Dog object. Without implementing new keyword we // have injected object of Dog just by reading an xml // configuration file. Dog dog1 = (Dog)context.getBean("shepherd"); Dog dog2 = (Dog)context.getBean("germanShepherd"); // creating two Dog objects and implementing type attribute // of constructor-arg // Calling our functionality dog1.move(); dog2.move(); } }
Output of the program :