Free tutorials for Java, Eclipse and Web programming



Follow me on twitter

Dependency Injection - Overview Tutorial

Lars Vogel

Version 0.2

23.01.2010

Revision History
Revision 0.114.01.2010Lars Vogel
Moved general explanation of dependency injection into own article
Revision 0.223.01.2010Lars Vogel
Added reference to Eclipse e4

Dependency injection (DI)

This article describes the general concept of dependency injection. It gives then pointer how dependency injection can be used in Java.


Table of Contents

1. Dependency Injection
2. Java and dependency injection frameworks.
3. Thank you
4. Questions and Discussion
5. Links and Literature
5.1. Source Code
5.2. Spring Links

1. Dependency Injection

A class A has a dependency to class B if class uses class B as a variable.

Java components / classes should be as independent as possible of other Java classes. This increases the possibility to reuse these classes and to test them independently of other classes, for example for unit testing . To decouple Java components from other Java components the dependency to a certain other class should get injected into them rather that the class itself creates / finds this object.

If dependency injection is used then the class B is given to class A via

  • the constructor of the class A - this is then called construction injection

  • a setter - this is then called setter injection

The general concept between dependency injection is called Inversion of Control. A class should not configure itself but should be configured from outside.

A design based on independent classes / components increases the re-usability and possibility to test the software. For example if a class A expects a Dao (Data Access object) for receiving the data from a database you can easily create another test object which mocks the database connection and inject this object into A to test A without having an actual database connection.

A software design based on dependency injection is possible with standard Java.