Customizable wiring of unresolved dependencies. Use this to share components across injectors, apply configuration, and form on-demand collections.
 The WireModule should enclose all modules in your application:
 
 
Guice.createInjector( new WireModule( bootModule, configModule, mainModule ) );Use the
ChildWireModule when you want to wire child injectors:
 
injector.createChildInjector( new ChildWireModule( serviceModule, subModule ) );
LocatorWiring which can supply the following bindings via the BeanLocator:
 
 
 @Inject MyType bean
 
 @Inject @Named("hint") MyType namedBean
 
 @Inject @MyQualifier MyType qualifiedBean
 
 @Inject Provider<MyType> beanProvider
 
 
 @Inject @Named("${my.property.name}") File file                      // supports basic type conversion
 
 @Inject @Named("${my.property.name:-http://example.org/}") URL url   // can give default in case property is not set
 
 @Inject @Named("${my.property.name:-development}") MyType bean       // can be used to pick specific @Named beans
 
 @Inject @Named("my.property.name") int port                          // shorthand syntax
 You can bind your configuration at runtime as follows:
 bind( ParameterKeys.PROPERTIES ).toInstance( myConfiguration );      // multiple bindings are merged into one view
 
 BeanLocator.
 They are also lazy, meaning instances are created as you access elements of the collection; the elements are then re-used for the same collection.
 @Inject List<MyType> list
 
 @Inject List<Provider<MyType>> providers
 
 @Inject Iterable<BeanEntry<MyQualifier, MyType>> entries             // gives access to additional metadata
 
 @Inject Map<String, MyType> stringMap // strings are taken from @Named values @Inject Map<Named, MyType> namedMap @Inject Map<MyQualifier, MyType> qualifiedMap @Inject Map<String, Provider<MyType>> providerMap