Spring Dependency Injection

  • Facebook
  • Google
  • LinkedIn
  • Twitter

Dependency Injection (DI) design pattern is used to define the object dependencies between each other. It has two types :

  • Setter Injection
  • Constructor Injection

1. Setter Injection

This is the most popular and simple DI method, it will injects the dependency via a setter method.

Example

A helper class with a setter method.

package com.javatutsworld.output;
 
import com.javatutsworld.output.IOutputGenerator;
 
public class OutputHelper
{
 IOutputGenerator outputGenerator;

 
public void setOutputGenerator(IOutputGenerator outputGenerator){
	this.outputGenerator = outputGenerator;

	}
 
}

A bean configuration file to declare the beans and set the dependency via setter injection (property tag).

<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-2.5.xsd">
 
<bean id="OutputHelper" class="com.javatutsworld.output.OutputHelper">

<property name="outputGenerator">
 <ref bean="CsvOutputGenerator" />
 </property>

</bean>
 
<bean id="CsvOutputGenerator" 
class
="com.javatutsworld.output.impl.CsvOutputGenerator" />
<bean id="JsonOutputGenerator"
class
="com.javatutsworld.output.impl.JsonOutputGenerator" />
  </beans>

You just injects a ‘CsvOutputGenerator’ bean into ‘OutputHelper’ object via a setter method (setOutputGenerator).

2. Constructor Injection

This DI method will injects the dependency via a constructor.

Example

A helper class with a constructor.

package com.javatutsworld.output;
 
import com.javatutsworld.output.IOutputGenerator;
 
public class OutputHelper

{
	IOutputGenerator outputGenerator;
 
   OutputHelper(IOutputGenerator outputGenerator){
	this.outputGenerator = outputGenerator;

	}
}

A bean configuration file to declare the beans and set the dependency via constructor injection (constructor-arg tag).

<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-2.5.xsd">
 
<bean id="OutputHelper" class="com.javatutsworld.output.OutputHelper">
<constructor-arg>
<bean class="com.javatutsworld.output.impl.CsvOutputGenerator" />
</constructor-arg>
</bean>
 
<bean id="CsvOutputGenerator" 
class
="com.javatutsworld.output.impl.CsvOutputGenerator" />
<bean id="JsonOutputGenerator"
class
="com.javatutsworld.output.impl.JsonOutputGenerator" />
  </beans>

You just injects a ‘CsvOutputGenerator’ bean into ‘OutputHelper’ object via a constructor.

      Advertisements