com.google.inject.Provider类的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(11.6k)|赞(0)|评价(0)|浏览(178)

本文整理了Java中com.google.inject.Provider类的一些代码示例,展示了Provider类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Provider类的具体详情如下:
包路径:com.google.inject.Provider
类名称:Provider

Provider介绍

[英]An object capable of providing instances of type T. Providers are used in numerous ways by Guice:

  • When the default means for obtaining instances (an injectable or parameterless constructor) is insufficient for a particular binding, the module can specify a custom Providerinstead, to control exactly how Guice creates or obtains instances for the binding.
  • An implementation class may always choose to have a Provider instance injected, rather than having a T injected directly. This may give you access to multiple instances, instances you wish to safely mutate and discard, instances which are out of scope (e.g. using a @RequestScoped object from within a @SessionScoped object), or instances that will be initialized lazily.
  • A custom Scope is implemented as a decorator of Provider, which decides when to delegate to the backing provider and when to provide the instance some other way.
  • The Injector offers access to the Provider it uses to fulfill requests for a given key, via the Injector#getProvider methods.
    [中]

代码示例

代码示例来源:origin: bootique/bootique

private static Optional<Command> defaultCommand(Injector injector) {
  // default is optional, so check via injector whether it is bound...
  Binding<Command> binding = injector.getExistingBinding(Key.get(Command.class, DefaultCommand.class));
  return binding != null ? Optional.of(binding.getProvider().get()) : Optional.empty();
}

代码示例来源:origin: jclouds/legacy-jclouds

Object getInstanceOfTypeWithQualifier(Type genericReturnType, Annotation qualifier) {
 // look for an existing binding
 Binding<?> binding = injector.getExistingBinding(Key.get(genericReturnType, qualifier));
 if (binding != null)
   return binding.getProvider().get();
 // then, try looking via supplier
 binding = injector
    .getExistingBinding(Key.get(newParameterizedType(Supplier.class, genericReturnType), qualifier));
 if (binding != null)
   return Supplier.class.cast(binding.getProvider().get()).get();
 // else try to create an instance
 return injector.getInstance(Key.get(genericReturnType, qualifier));
}

代码示例来源:origin: org.apache.jclouds/jclouds-compute

protected Optional<SecurityGroupExtension> provideSecurityGroupExtension(Injector i) {
   Binding<SecurityGroupExtension> binding = i.getExistingBinding(Key.get(SecurityGroupExtension.class));
   return binding == null ? Optional.<SecurityGroupExtension> absent() : Optional.of(binding.getProvider().get());
  }
}

代码示例来源:origin: apache/incubator-druid

@Test(expected = NullPointerException.class)
public void testFailsOnEmptyTier()
{
 final JsonConfigurator configurator = injector.getBinding(JsonConfigurator.class).getProvider().get();
 properties.put(propertyBase + ".lookupTier", "");
 final JsonConfigProvider<LookupListeningAnnouncerConfig> configProvider = JsonConfigProvider.of(
   propertyBase,
   LookupListeningAnnouncerConfig.class
 );
 configProvider.inject(properties, configurator);
 final LookupListeningAnnouncerConfig config = configProvider.get().get();
 config.getLookupTier();
}

代码示例来源:origin: apache/incubator-druid

String.class, Types.newParameterizedType(Provider.class, key.getTypeLiteral().getType())
);
if (key.getAnnotation() != null) {
 implsMap = (Map<String, Provider<T>>) injector.getInstance(Key.get(mapType, key.getAnnotation()));
} else if (key.getAnnotationType() != null) {
 implsMap = (Map<String, Provider<T>>) injector.getInstance(Key.get(mapType, key.getAnnotationType()));
} else {
 implsMap = (Map<String, Provider<T>>) injector.getInstance(Key.get(mapType));
return provider.get();

代码示例来源:origin: soabase/soabase

private void registerFilter(Injector injector, Environment environment, Binding<?> binding)
{
  FilterDefinition filterDefinition = (FilterDefinition)binding.getProvider().get();
  log.info("Registering filter: " + filterDefinition);
  Filter filterInstance = filterDefinition.getFilterInstance();
  if ( filterInstance == null )
  {
    filterInstance = injector.getInstance(filterDefinition.getFilterKey());
  }
  FilterRegistration.Dynamic registration = environment.servlets().addFilter(filterDefinition.getFilterKey().toString(), filterInstance);
  registration.setInitParameters(filterDefinition.getInitParams());
  registration.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, filterDefinition.getUriPatterns());
}

代码示例来源:origin: apache/shiro

@Test
public void testPropertySetting() throws Exception {
  IMocksControl control = createControl();
  TypeEncounter<SomeInjectableBean> encounter = control.createMock(TypeEncounter.class);
  Provider<Injector> injectorProvider = control.createMock(Provider.class);
  Injector injector = control.createMock(Injector.class);
  expect(encounter.getProvider(Injector.class)).andReturn(injectorProvider);
  expect(injectorProvider.get()).andReturn(injector).anyTimes();
  Capture<MembersInjector<SomeInjectableBean>> capture = new Capture<MembersInjector<SomeInjectableBean>>();
  encounter.register(and(anyObject(MembersInjector.class), capture(capture)));
  SecurityManager securityManager = control.createMock(SecurityManager.class);
  String property = "myPropertyValue";
  expect(injector.getInstance(Key.get(SecurityManager.class))).andReturn(securityManager);
  expect(injector.getInstance(Key.get(String.class, Names.named("shiro.myProperty")))).andReturn(property);
  expect(injector.getInstance(Key.get(String.class, Names.named("shiro.unavailableProperty"))))
      .andThrow(new ConfigurationException(Collections.singleton(new Message("Not Available!"))));
  expect((Map)injector.getInstance(BeanTypeListener.MAP_KEY)).andReturn(Collections.EMPTY_MAP).anyTimes();
  control.replay();
  BeanTypeListener underTest = new BeanTypeListener();
  underTest.hear(TypeLiteral.get(SomeInjectableBean.class), encounter);
  SomeInjectableBean bean = new SomeInjectableBean();
  capture.getValue().injectMembers(bean);
  assertSame(securityManager, bean.securityManager);
  assertSame(property, bean.myProperty);
  assertNull(bean.unavailableProperty);
  control.verify();
}

代码示例来源:origin: net.stickycode.configured/sticky-configured-guice3

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public Object findWithName(Class contract, String name) throws StrategyNotFoundException {
 Binding<Set> b = injector.getBinding(Key.get(setOf(TypeLiteral.get(contract))));
 for (Object o : b.getProvider().get()) {
  if (name.equals(Introspector.decapitalize(o.getClass().getSimpleName())))
   return o;
 }
 throw new StrategyNotFoundException(contract, name, Collections.<String>emptySet());
}

代码示例来源:origin: org.eclipse.che.core/che-core-commons-schedule

private <T> T getValue(Class<T> configurationType, String configurationKey) {
 try {
  return injectorProvider
    .get()
    .getInstance(Key.get(configurationType, Names.named(configurationKey)));
 } catch (ConfigurationException | ProvisionException e) {
  return null;
 }
}

代码示例来源:origin: apache/incubator-druid

throws IllegalAccessException, NoSuchMethodException, InvocationTargetException, IOException
JsonConfigurator configurator = injector.getBinding(JsonConfigurator.class).getProvider().get();
propertyValues.put(StringUtils.format("%s.connectorPath", configPrefix), ZKPaths.makePath(base, "connector"));
ZkPathsConfig zkPathsConfigObj = zkPathsConfig.get().get();
validateEntries(zkPathsConfigObj);
Assert.assertEquals(propertyValues.size(), assertions);
ObjectMapper jsonMapper = injector.getProvider(Key.get(ObjectMapper.class, Json.class)).get();
String jsonVersion = jsonMapper.writeValueAsString(zkPathsConfigObj);

代码示例来源:origin: apache/incubator-druid

@Override
protected HttpClient newHttpClient()
{
 return httpClientProvider.get();
}

代码示例来源:origin: apache/shiro

public void injectMembers(I instance) {
    for (Map.Entry<PropertyDescriptor, Key<?>> dependency : propertyDependencies.entrySet()) {
      try {
        final Injector injector = injectorProvider.get();
        Object value = injector.getInstance(getMappedKey(injector, dependency.getValue()));
        dependency.getKey().getWriteMethod().invoke(instance, value);
      } catch (ConfigurationException e) {
        // This is ok, it simply means that we can't fulfill this dependency.
        // Is there a better way to do this?
      } catch (InvocationTargetException e) {
        throw new RuntimeException("Couldn't set property " + dependency.getKey().getDisplayName(), e);
      } catch (IllegalAccessException e) {
        throw new RuntimeException("We shouldn't have ever reached this point, we don't try to inject to non-accessible methods.", e);
      }
    }
  }
});

代码示例来源:origin: jenkinsci/jenkins

private <U> void _find(Class<U> type, List<ExtensionComponent<U>> result, Injector container) {
  for (Entry<Key<?>, Binding<?>> e : container.getBindings().entrySet()) {
    if (type.isAssignableFrom(e.getKey().getTypeLiteral().getRawType())) {
      Annotation a = annotations.get(e.getKey());
      Object o = e.getValue().getProvider().get();
      if (o!=null) {
        GuiceExtensionAnnotation gea = a!=null ? extensionAnnotations.get(a.annotationType()) : null;
        result.add(new ExtensionComponent<>(type.cast(o), gea != null ? gea.getOrdinal(a) : 0));
      }
    }
  }
}

代码示例来源:origin: apache/incubator-druid

@Override
public HttpClient get()
 final DruidHttpClientConfig config = getConfigProvider().get().get();
  sslContextFactory.setSslContext(getSslContextBinding().getProvider().get());
  httpClient = new HttpClient(sslContextFactory);
 } else {
 httpClient.setExecutor(pool);
 final Lifecycle lifecycle = getLifecycleProvider().get();

代码示例来源:origin: apache/incubator-druid

sslContextFactory = sslContextFactoryBinding.getProvider().get();
JettyServerInitializer initializer = injector.getInstance(JettyServerInitializer.class);
try {
 initializer.initialize(server, injector);

代码示例来源:origin: apache/incubator-druid

@Override
 public T get()
 {
  return supplierProvider.get().get();
 }
}

代码示例来源:origin: apache/incubator-druid

private Emitter findEmitter(String emitterType, List<Binding<Emitter>> emitterBindings)
{
 for (Binding<Emitter> binding : emitterBindings) {
  if (Names.named(emitterType).equals(binding.getKey().getAnnotation())) {
   return binding.getProvider().get();
  }
 }
 return null;
}

代码示例来源:origin: apache/shiro

@Test(expected = OutOfScopeException.class)
public void testOutOfScope() throws Exception {
  ShiroSessionScope underTest = new ShiroSessionScope();
  Provider<SomeClass> mockProvider = createMock(Provider.class);
  replay(mockProvider);
  underTest.scope(Key.get(SomeClass.class), mockProvider).get();
}

代码示例来源:origin: rapidoid/rapidoid

private Set<Object> getBeans(Collection<Class<? extends Annotation>> annotations) {
  Set<Object> beans = U.set();
  for (Map.Entry<Key<?>, Binding<?>> e : injector.getAllBindings().entrySet()) {
    Key<?> key = e.getKey();
    Binding<?> value = e.getValue();
    boolean include = false;
    if (U.notEmpty(annotations)) {
      if (key.getTypeLiteral() != null && key.getTypeLiteral().getRawType() != null) {
        Class<?> type = key.getTypeLiteral().getRawType();
        if (Metadata.isAnnotatedAny(type, annotations)) {
          include = true;
        }
      }
    } else {
      include = true;
    }
    if (include) {
      beans.add(value.getProvider().get());
    }
  }
  return beans;
}

代码示例来源:origin: resteasy/Resteasy

public void processInjector(final Injector injector)
  {
   List<Binding<?>> rootResourceBindings = new ArrayList<Binding<?>>();
   for (final Binding<?> binding : injector.getBindings().values())
   {
     final Type type = binding.getKey().getTypeLiteral().getRawType();
     if (type instanceof Class)
     {
      final Class<?> beanClass = (Class) type;
      if (GetRestful.isRootResource(beanClass))
      {
        // deferred registration
        rootResourceBindings.add(binding);
      }
      if (beanClass.isAnnotationPresent(Provider.class))
      {
        LogMessages.LOGGER.info(Messages.MESSAGES.registeringProviderInstance(beanClass.getName()));
        providerFactory.registerProviderInstance(binding.getProvider().get());
      }
     }
   }
   for (Binding<?> binding : rootResourceBindings)
   {
     Class<?> beanClass = (Class) binding.getKey().getTypeLiteral().getType();
     final ResourceFactory resourceFactory = new GuiceResourceFactory(binding.getProvider(), beanClass);
     LogMessages.LOGGER.info(Messages.MESSAGES.registeringFactory(beanClass.getName()));
     registry.addResourceFactory(resourceFactory);
   }
  }
}

相关文章

微信公众号

最新文章

更多

Provider类方法