Dependency Injection - AyushiDamele/Spring GitHub Wiki

Dependency Injection :

Injection Types There are many types of injection with Spring The 2 most common are : 1) Constructor Injection 2) Setter Injection Autowiring

Development Process - Constructor Injection

  1. Define the dependency interface and class
  2. Create a constructor in your class for injections
  3. Configure the dependency injection in Spring config file

Step 1: Define the dependency interface and class File: FortuneService.java

public interface FortuneService { 
	public String getFortune(); 
}

File: HappyFortuneService.java

public class HappyFortuneService implements FortuneService {
	public String getFortune() { 
		return "Today is your lucky day!"; 
	}
}

Step 2: Create a constructor in your class for injections

public class BaseballCoach implements Coach {
	private FortuneService fortuneService;
	public BaseballCoach(FortuneService theFortuneService) {
		fortuneService = theFortuneService; 
	}
	... 
} 

Step 3: Configure the dependency injection in Spring config file

<bean id="myFortuneService"  
   class="com.luv2code.springdemo.HappyFortuneService">
</bean>      

<bean  id="myCoach" 
   class="com.luv2code.springdemo.BaseballCoach">
   	<constructor-arg ref="myFortuneService" />
</bean>

Development Process - Setter Injection

  1. Create setter method(s) in your class for injections
  2. Configure the dependency injection in Spring config file

Step1: Create setter method(s) in your class for injections File : CricketCoach.java

public class CricketCoach implements Coach { 

	private FortuneService fortuneService; 
	public CricketCoach() { } 
	public void setFortuneService(FortuneService fortuneService) {
		this.fortuneService = fortuneService; 
	}  ... 
} 

Step 2: Configure the dependency injection in Spring config file File: applicationContext.xml

<bean id="myFortuneService"  
   class="com.luv2code.springdemo.HappyFortuneService"> 
</bean> 
<bean id="myCricketCoach" 
   class="com.luv2code.springdemo.CricketCoach">
   <property name="fortuneService" ref="myFortuneService" /> 
</bean>

Injecting Literal Values

Development Process

  1. Create setter method(s) in your class for injections
  2. Configure the injection in Spring config file

Step1: Create setter method(s) in your class for injections File: CricketCoach.java

public class CricketCoach implements Coach { 
	private String emailAddress; 
	private String team; 
	
	public void setEmailAddress(String emailAddress) ...
	public void setTeam(String team) ... 
	... 
} 

Step 2: Configure the injection in Spring config file

    <bean id="myCricketCoach" 
		class="com.luv2code.springdemo.CricketCoach">
		<property name="fortuneService" ref="myFortuneService" />
		<property name="emailAddress" value="[email protected]" />
		<property name="team" value="Sunrisers Hyderabad" />
	</bean> 

Injecting literal values from properties file

Development Process

  1. Create Properties File
  2. Load Properties File in Spring config file
  3. Reference values from Properties File

Step 1: Create Properties File File : sport.properties foo.email=[email protected] foo.team=Royal Challengers Bangalore

Step 2: Load Properties file in Spring config file File: applicationContext.xml

<context:property-placeholder location="classpath:sport.properties"/> 

Step 3: Reference Values from Properties File File: applicationContext.xml

<bean id="myCricketCoach" 
	class="com.luv2code.springdemo.CricketCoach"> 
	… 
	<property name="emailAddress" value="${foo.email}" />
    <property name="team" value="${foo.team}" /> 
</bean> 

Dependency Injection

It is a design pattern, that is used to implement Inversion Of Control(IOC), and helps in achieving loose coupling.

⚠️ **GitHub.com Fallback** ⚠️