package com.google.inject.internal; import com.google.inject.Injector; import javax.inject.Inject; import javax.inject.Singleton; import java.lang.annotation.Annotation; /** * Specific version of {@link com.google.inject.internal.DynamicClassProvider}, which applies singleton scope * to generated classes. * The main intention is to reduce code size from common case from * {@code @ScopeAnnotation(Singleton.class) @ProvidedBy(DynamicClassProvider.class)} * to simply {@code @ProvidedBy(DynamicSingletonProvider.class)}. * <p> * If used with injectors hierarchy or within private modules, use together with * {@link ru.vyarus.guice.ext.core.generator.anchor.GeneratorAnchorModule} to properly scope dynamic bindings. * * @author Vyacheslav Rusakov * @see com.google.inject.internal.DynamicClassProvider for more docs * @since 05.01.2015 */ @Singleton public class DynamicSingletonProvider extends DynamicClassProvider { @Inject public DynamicSingletonProvider(final Injector injector) { super(injector); } @Override protected Class<? extends Annotation> getScopeAnnotation() { return Singleton.class; } }