package ru.vyarus.dropwizard.guice.injector.lookup; import com.google.inject.Injector; import io.dropwizard.Application; import javax.inject.Provider; /** * Lazy injector provider. Used internally instead of direct injector reference when injector is not constructed yet. * It is not registered in guice context and used purely as lazy reference to injector during startup * (in jersey bindings logic). * * @author Vyacheslav Rusakov * @see InjectorLookup * @since 19.04.2015 */ public class InjectorProvider implements Provider<Injector> { private final Application application; private Injector injector; public InjectorProvider(final Application application) { this.application = application; } @Override public Injector get() { if (injector == null) { injector = InjectorLookup.getInjector(application).get(); } return injector; } }