2 * Copyright 2005-2010 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * This package provides a mini-framework for interfacing to existing dependency injection
18 * mechanisms. This package does not provide dependency injection, but implementations are expected to
19 * implement it, usually by delegating to an existing dependency injection framework. The interfaces in this
20 * package provide independence on the actual framework chosen and also allow for better testability.
22 * <h2>Users of the package</h2>
24 * <p>Users of this package will typically use: </p>
26 * <li> <code>SimpleInjector</code>: This is the class used to perform injection of dependencies into
27 * a given object. </li>
28 * <li> <code>Injectable</code>: By subclassing this class, the classes automatically get their
29 * dependencies injected at construction. </li>
30 * <li> <code>InjectorFactoryBuilder</code>: To get an injector factory reference for use in the
31 * <code>SimpleInjector</code>
34 * <h2>Implementors of the package</h2>
36 * <p>Of interest to implementations of this package integrating with dependency injection frameworks are: </p>
38 * <li> <code>Injector</code>: The main interface to be implemented is the {@link Injector}, by which injection is done.</li>
39 * <li> <code>InjectorFactory</code>: Injectors are created by an implementation of the {@link InjectorFactory} which
40 * creates injectors based on the class.</li>
41 * <li> <code>InjectorFactoryBuilder</code>: Implementations must make their <code>InjectorFactory</code>
42 * available through the <code>ServiceLoader</code> mechanism.
46 * <p>Class overview</p>
47 * <img src="doc-files/Class_Diagram__overview.png"/>
50 package org.wamblee.inject;