Spring Dependency Injection via Constructor
In the previous example we have
seen Dependency injection via setter method and it is very simple. This page shows how to achieve dependency injection using construtor.
Here is a simple interface, which prints colors:
package com.java2novice.bean;
public interface MyColor {
public void printColor();
}
|
An implementation class for above interface:
package com.java2novice.bean;
public class BlueColor implements MyColor {
@Override
public void printColor() {
System.out.println("It is blue in color...");
}
}
|
Here is ColorManager, we are using dependency injection via construtor in this class:
package com.java2novice.bean;
public class ColorManager {
MyColor color;
public void pringColor(){
this.color.printColor();
}
/**
* dependency injection through constructor
* @param myColor
*/
public ColorManager(MyColor myColor){
this.color = myColor;
}
}
|
You can see spring bean configuration file below. We have two bean declarations. If you closely monitor constructor-arg tag,
we are passing blueColor reference to the constructor as an input parameter.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="colorManager" class="com.java2novice.bean.ColorManager">
<constructor-arg>
<ref bean="blueColor" />
</constructor-arg>
</bean>
<bean id="blueColor" class="com.java2novice.bean.BlueColor" />
</beans>
|
Here is the dependency injection via constructor demo class:
package com.java2novice.test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.java2novice.bean.ColorManager;
public class DiConstructorDemo {
public static void main(String a[]){
@SuppressWarnings("resource")
ApplicationContext context
= new ClassPathXmlApplicationContext("applicationContext.xml");
ColorManager clrManager = (ColorManager)context.getBean("colorManager");
clrManager.pringColor();
}
}
|
|