Module autowiring¶
Because guice modules are registered in dropwizard init section only Bootstrap instance is available.
Often Environment and Configuration objects are also required.
Autowiring interfaces¶
Guicey can automatically inject environment and configuration objects into your module if
it implements any of (or all of them): BootstrapAwareModule, EnvironmentAwareModule
and ConfigurationAwareModule interfaces.
Reference object will be set to module just before injector creation, so you can use it inside your
module logic (configuration method).
Warning
Module autowiring will only work for modules directly set to modules() (of main bundle or any guicey bundle).
public class MyModule implements EnvironmentAwareModule { private Environemnt environment; @Override public void setEnvironment(Environment environment) { this.environment = environment; } @Override protected void configure() { // use environment here } }
Autowiring base class¶
To avoid manually implementing interfaces (avoid boilerplate) you can use DropwizardAwareModule as
base class which already implements all autowiring interfaces:
public class MyModule extends DropwizardAwareModule<MyConfiguration> { @Override protected void configure() { bootstrap() // Bootstrap instance environment() // Environment instance configuration() // MyConfiguration instance appPackage() // application class package } }