Netflix/governator — pull request #132 by elandau (2014-06-05 05:52:22+00:00)
Title: Bootstrap annotations + More detail to BindingReport

Bootstrap annotations allow for a single class to be annotated with several annotations that translate into LifecycleInjectorBuilderSuite's that are used to configure the LifecycleInjector. Using annotations
makes it far less verbose to configure the LifecycleInjector.

For example, a top level application class may be defined like this

```java
@Application(name="foo", version="1.0")
@ConfigurationProvider(ArchaiusConfigurationProvider.class)
@JerseyGuiceServlet(MyServletModule.class)
public class MyApplication {
}
```

An injector can now be created simply by calling
```java
Injector injector LifecycleBuilder.bootstrap(MyApplication.class);
```

Each annotation translates into a single class that implements LifecycleInjectorBuilderSuite. A Guice injector is used to drive this bootstrap process which makes it possible to inject any of these annotations.

```java
public class ApplicationBootstrap extends LifecycleInjectorBuilderSuite {
@Inject
ApplicationBootstrap(Application app) {
}

@Override
public void configure(LifecycleInjectorBuilder builder) {
}
}