Dependency Injection - AyushiDamele/Spring GitHub Wiki
Injection Types There are many types of injection with Spring The 2 most common are : 1) Constructor Injection 2) Setter Injection Autowiring
- Define the dependency interface and class
- Create a constructor in your class for injections
- 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>
- Create setter method(s) in your class for injections
- 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>
Development Process
- Create setter method(s) in your class for injections
- 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>
Development Process
- Create Properties File
- Load Properties File in Spring config file
- 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>
It is a design pattern, that is used to implement Inversion Of Control(IOC), and helps in achieving loose coupling.