package com.netflix.governator.guice.serviceloader; import java.util.ServiceLoader; import com.google.common.collect.Lists; import com.google.inject.Module; import com.netflix.governator.guice.BootstrapBinder; import com.netflix.governator.guice.BootstrapModule; /** * BootstrapModule that loads guice modules via the ServiceLoader. * * @author elandau */ public class ServiceLoaderBootstrapModule implements BootstrapModule { private final Class<? extends Module> type; public ServiceLoaderBootstrapModule() { this(Module.class); } public ServiceLoaderBootstrapModule(Class<? extends Module> type) { this.type = type; } @Override public void configure(BootstrapBinder binder) { ServiceLoader<? extends Module> modules = ServiceLoader.load(type); binder.includeModules(Lists.newArrayList(modules.iterator())); } }