package com.netflix.raigad.scheduler; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Singleton; import org.junit.Test; public class TestGuiceSingleton { public static class GModules extends AbstractModule { @Override protected void configure() { bind(EmptryInterface.class).to(GuiceSingleton.class).asEagerSingleton(); } } public interface EmptryInterface { public String print(); } @Singleton public static class GuiceSingleton implements EmptryInterface { public String print() { System.out.println(this.toString()); return this.toString(); } } @Test public void testSingleton() { Injector injector = Guice.createInjector(new GModules()); injector.getInstance(EmptryInterface.class).print(); injector.getInstance(EmptryInterface.class).print(); injector.getInstance(EmptryInterface.class).print(); printInjected(); printInjected(); printInjected(); printInjected(); } public void printInjected() { Injector injector = Guice.createInjector(new GModules()); injector.getInstance(EmptryInterface.class).print(); } }