Source picture: http://mealsandmovesblog.com |
It will be nice if we know what dependency injection is before we implement it in Java .
What is Dependency Injection?
Dependency Injection is a design pattern.
Every component of an application have a dependency with another component. Let me explain with a simple example below :
public class Jacket {
String color = "blue"+"#87CEEB";
public String getColor(){
return color;
}
}
"Jacket" has a dependency with String. In other word, Jacket can not be created if String object does not exist.
Jacket has tightly coupled with String because Jacket knows how to create String object. Problem will occur if the object creation is complex, and not as a simple as String object. For more complex example, see "Connection" object creation below :
public static void main() {
Connection con = null;
String url = "";
String user = "";
String password = "";
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
try {
con = DriverManager.getConnection(url, user, password);
} catch (SQLException e) {
// exception statement here
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
You can imagine if that code appear in every class, your code would be a mess.
From two examples above we can resume the problem of dependency :
- High Coupling
- Low Cohesion
How dependency injection works?
1. Create String object color outside Jacket
2. Create Jacket object
3. Inject color Object through constructor or setter method
So practically, here is the example of dependency injection :
public class Jacket {
private String color;
public Jacket(){
}
public Jacket(String color){ //inject dependency through constructor
this.color = color;
}
public void setColor(String color){ //inject dependency through setter method
this.color = color;
}
public String getColor(){
return color;
}
}
public class Main(){
public static void main(String []args){
String color = "blue"+"#87CEEB"; // create color String object
Jacket jacket = new Jacket (color); //inject through constructor
Jacket jacket2 = new Jacket();
jacket2.setColor(color); //inject through setter method
}
}
Next post we will look dependency injection in Spring Framework.
Happy coding :)
0 comments:
Post a Comment