A simple example to demonstrate, how to provide object dependency injection to a bean using Configuration file in Spring Framework
1. Create a Coat class
package com.hubberspot.spring;
public class Coat {
private String color;
private String type;
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
2. Create a Tail class
package com.hubberspot.spring;
public class Tail {
private int length;
private String color;
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
3. Create a Dog class
package com.hubberspot.spring;
public class Dog {
private Tail tail;
private Coat coat;
public Tail getTail() {
return tail;
}
public void setTail(Tail tail) {
this.tail = tail;
}
public Coat getCoat() {
return coat;
}
public void setCoat(Coat coat) {
this.coat = coat;
}
public void move() {
System.out.println("A Dog having "+ getCoat().getColor() +
" color coat \nand "+ getTail().getLength() + " cms" +
" tail moves slowly ...");
}
}
4. Create a Spring configuration file placed in the classpath of Spring project
|
5. Create a Test class and Run it to see the output below -
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 dog = (Dog)context.getBean("dog");
// Calling our functionality
dog.move();
}
}
6. How it exactly works see below diagram -
Output of the program -

