com.google.inject.Binder#requestInjection ( )源码实例Demo

下面列出了com.google.inject.Binder#requestInjection ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: business   文件: DefaultFactoryStrategy.java
@SuppressWarnings("unchecked")
@Override
public void resolve(Binder binder) {
    FactoryModuleBuilder guiceFactoryBuilder = new FactoryModuleBuilder();
    for (Map.Entry<Type, Class<?>> classes : typeVariables.entries()) {
        Type producedType = classes.getKey();
        Class<? extends T> producedImplementationType = (Class<? extends T>) classes.getValue();

        Key<T> key = BindingUtils.resolveKey(injecteeClass, producedImplementationType, producedType);
        Provider<T> provider = new GenericGuiceProvider<>(injectedClass, producedImplementationType);
        binder.requestInjection(provider);
        binder.bind(key).toProvider(provider);
        guiceFactoryBuilder.implement(key, injectedClass);
    }

    // Assisted factory should not be bound twice
    if (bindGuiceFactory) {
        TypeLiteral<?> guiceAssistedFactory = TypeLiteral.get(newParameterizedType(FACTORY_CLASS, injectedClass));
        binder.install(guiceFactoryBuilder.build(guiceAssistedFactory));
    }
}
 
源代码2 项目: seed   文件: GenericBindingStrategy.java
@SuppressWarnings("unchecked")
private void bindKey(Binder binder, FactoryModuleBuilder guiceFactoryBuilder, Type[] params, Key<?> defaultKey) {
    // If a default key is provided use a linked binding to bind it
    if (defaultKey != null) {
        binder.bind(defaultKey.getTypeLiteral()).to((Key) defaultKey);
    }
    // Get the key to bind
    Key<T> key = BindingUtils.resolveKey(injecteeClass, genericImplClass, params);

    // Prepare the Guice provider
    Provider<?> provider = new GenericGuiceProvider<T>(genericImplClass, params);
    binder.requestInjection(provider);
    binder.bind(key).toProvider((Provider) provider);

    // Prepare the factory for assisted injection
    guiceFactoryBuilder.implement(key, (Class) genericImplClass);
}
 
源代码3 项目: business   文件: DefaultRepositoryStrategy.java
@Override
public void resolve(Binder binder) {
    for (Class<? extends T> impl : implementations) {
        if (Arrays.stream(impl.getMethods()).anyMatch(m -> isAbstract(m.getModifiers()))) {
            LOGGER.warn("Skipping default repository implementation {}: abstract methods are still present",
                    impl.getName());
        } else {
            Key<T> key = BusinessUtils.getQualifier(impl)
                    .map(qualifier -> Key.get(repositoryInterface, qualifier))
                    .orElseThrow(() -> new IllegalStateException("Missing qualifier on implementation" + impl));

            if (defaultKey != null) {
                binder.bind(repositoryInterface).to(defaultKey);
            }

            Provider<T> provider = new GenericGuiceProvider<>(impl, generics);
            binder.requestInjection(provider);
            binder.bind(key).toProvider(provider);

            FactoryModuleBuilder guiceFactoryBuilder = new FactoryModuleBuilder();
            guiceFactoryBuilder.implement(key, impl);
            binder.install(guiceFactoryBuilder.build(
                    TypeLiteral.get(Types.newParameterizedType(FACTORY_CLASS, impl))
            ));
        }
    }
}
 
源代码4 项目: attic-aurora   文件: TimedInterceptor.java
/**
 * Installs an interceptor in a guice {@link com.google.inject.Injector}, enabling
 * {@literal @Timed} method interception in guice-provided instances.  Requires that a
 * {@link TimeSeriesRepository} is bound elsewhere.
 *
 * @param binder a guice binder to require bindings against
 */
public static void bind(Binder binder) {
  Preconditions.checkNotNull(binder);

  Bindings.requireBinding(binder, TimeSeriesRepository.class);

  TimedInterceptor interceptor = new TimedInterceptor();
  binder.requestInjection(interceptor);
  binder.bindInterceptor(Matchers.any(), Matchers.annotatedWith(Timed.class), interceptor);
}
 
源代码5 项目: attic-aurora   文件: AopModule.java
public static void bindThriftDecorator(
    Binder binder,
    Matcher<? super Class<?>> classMatcher,
    MethodInterceptor interceptor) {

  binder.bindInterceptor(
      classMatcher,
      Matchers.returns(Matchers.subclassesOf(Response.class)),
      interceptor);
  binder.requestInjection(interceptor);
}