package net.csdn.bootstrap.loader.impl; import com.google.inject.*; import net.csdn.ServiceFramwork; import net.csdn.bootstrap.loader.Loader; import net.csdn.common.settings.Settings; import net.csdn.jpa.type.DBInfo; import net.csdn.jpa.type.DBType; import net.csdn.modules.http.HttpModule; import net.csdn.modules.scan.ScanModule; import net.csdn.modules.settings.SettingsModule; import net.csdn.modules.threadpool.ThreadPoolModule; import net.csdn.modules.transport.TransportModule; import java.util.ArrayList; import java.util.List; /** * BlogInfo: WilliamZhu * Date: 12-7-2 * Time: 上午11:32 */ public class ModuelLoader implements Loader { @Override public void load(final Settings settings) { final List<Module> moduleList = new ArrayList<Module>(); moduleList.add(new SettingsModule(settings)); moduleList.add(new ThreadPoolModule()); moduleList.add(new TransportModule()); moduleList.add(new HttpModule()); moduleList.add(new ScanModule()); moduleList.add(new AbstractModule() { @Override protected void configure() { bind(DBInfo.class).in(Singleton.class); } }); moduleList.add(new AbstractModule() { @Override protected void configure() { String clzzName = settings.get("type_mapping", "net.csdn.jpa.type.impl.MysqlType"); final Class czz; try { czz = Class.forName(clzzName); bind(DBType.class).to(czz).in(Singleton.class); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }); ServiceFramwork.injector = Guice.createInjector(Stage.PRODUCTION, moduleList); } }