Dependency Injection

What is Dependency Injection?

Each Object-oriented application consists of many classes that work together in order to solve a problem. However, when writing a complex application, application classes should be as independent as possible. DI helps in gluing these classes together and at the same time keeping them independent. Dependency injection is a technique whereby one object (or static method) supplies the dependencies of another object.

Pros

  • increase the possibility to reuse classes
  • test them independently of other classes while unit testing

Code with no DI vs code with DI

				
					public class Computer {

    private CPU cpu;
    
    public Computer() {
        this.cpu = new CPU();
    }
}
				
			

Dependency between Computer and CPU.

				
					public class Computer {

    private CPU cpu;
    
    public Computer(CPU cpu) {
        this.cpu = cpu;
    }
    
}
				
			

Dependency between Computer and CPU. Dependency is injected through class constructor (Computer should not worry about CPU implementation).

Types of DI

  • Constructor-based dependency injection – used for mandatory dependencies
				
					public Computer(CPU cpu) {
    this.cpu = cpu;
}
				
			
  • Setter-based dependency injection – used for optional dependencies
				
					public Computer(CPU cpu) {
    this.cpu = cpu;
}
				
			
  • Property-based dependency injection – considered as bad practice!
				
					@Autowired
private CPU cpu;
				
			
Share :
Share :

Weitere Beiträge