ize reusability, testability and maintainability compared to
 traditional approaches such as constructors, factories, and service
 locators (e.g., JNDI).&nbsp;This process, known as <i>dependency
 injection</i>, is beneficial to most nontrivial applications.

 <p>Many types depend on other types. For example, a <code>Stopwatch</code> might
 depend on a <code>TimeSource</code>. The types on which a type depends are
 known as its <i>dependencies</i>. The process of finding an instance of a
 dependency to use 