package org.dayatang.ioc.guice; import com.google.inject.Module; import org.dayatang.domain.InstanceFactory; public class GuiceIocUtils { private static final ThreadLocal<GuiceInstanceProvider> providerHolder = new ThreadLocal<GuiceInstanceProvider>(); private GuiceIocUtils() { } public static void initInstanceProvider(Module... modules) { InstanceFactory.setInstanceProvider(getInstanceProvider(modules)); } private static GuiceInstanceProvider getInstanceProvider(Module[] modules) { GuiceInstanceProvider result = providerHolder.get(); if (result != null) { return result; } synchronized (GuiceIocUtils.class) { result = new GuiceInstanceProvider(modules); providerHolder.set(result); return result; } } }