The use of Guice has been changed. Instead of a single huge injector
build by module composition, there are now several bundles that
has dependencies to other bundles. Each bundle is build using a
configuration pojo that includes its dependencies and configuration
properties/objects. Each bundle then build their own injector using its
dependencies and then expose its external interface so others can use
the objects it creates.
By doing that, each module explicity says on which modules it depends
without the ability to inject objects from other modules. It also allow
us to create several modules of the same type without breaking, which is
specially important to be able to replicate from several shards.
The use of Guice has been changed. Instead of a single huge injector build by module composition, there are now several bundles that has dependencies to other bundles. Each bundle is build using a configuration pojo that includes its dependencies and configuration properties/objects. Each bundle then build their own injector using its dependencies and then expose its external interface so others can use the objects it creates.
By doing that, each module explicity says on which modules it depends without the ability to inject objects from other modules. It also allow us to create several modules of the same type without breaking, which is specially important to be able to replicate from several shards.