In Guicing your jars I mention using Java's service loader feature to automate finding modules for Guice, along these lines:
public class MetaInfServicesModule
extends AbstractModule {
@Override
protected void configure() {
for (final Module module : ServiceLoader.load(Module.class))
install(module);
}
} What I did not mention was the secret sauce, Kohsuke's MetaInfServices annotation processor which creates the META-INF/services file for you:
@MetaInfServices(Module.class)
public class FooModule
extends AbstractModule {
@Override
protected void configure() {
// Awesome foo-ness here
}
} Now using your Maven runtime dependencies to control the classpath, Guice automatically installs your modules:
Guice.createInjector(new MetaInfServicesModule());
(Dependencies between modules is beyond the scope of this post!)
No comments:
Post a Comment