private void bindAnnotations(Annotation[] annotations) { for ( Annotation annotation : annotations ) { AutoBindProvider autoBindProvider = getAutoBindProvider(annotation); if ( autoBindProvider != null ) { //noinspection unchecked autoBindProvider.configure(binder(), annotation); } } }
@SuppressWarnings("unchecked") private void bindAutoBindSingletons() { for ( Class<?> clazz : classpathScanner.getClasses() ) { if ( ignoreClasses.contains(clazz) || !clazz.isAnnotationPresent(AutoBindSingleton.class) ) { continue; } AutoBindSingleton annotation = clazz.getAnnotation(AutoBindSingleton.class); if ( javax.inject.Provider.class.isAssignableFrom(clazz) ) { Preconditions.checkState(annotation.value() == Void.class, "@AutoBindSingleton value cannot be set for Providers"); Preconditions.checkState(annotation.baseClass() == Void.class, "@AutoBindSingleton value cannot be set for Providers"); Preconditions.checkState(!annotation.multiple(), "@AutoBindSingleton(multiple=true) value cannot be set for Providers"); LOG.info("Installing @AutoBindSingleton " + clazz.getName()); ProviderBinderUtil.bind(binder(), (Class<javax.inject.Provider>)clazz, Scopes.SINGLETON); } else if ( Module.class.isAssignableFrom(clazz) ) { // Modules are handled by {@link InteranlAutoBindModuleBootstrapModule} continue; } else { bindAutoBindSingleton(annotation, clazz); } } }
Multibinder<?> multibinder = Multibinder.newSetBinder(binder(), (Class)foundBindingClass); binder() .withSource(getCurrentStackElement()) .bind((Class)foundBindingClass) if ( annotation.multiple() ) Multibinder<?> multibinder = Multibinder.newSetBinder(binder(), typeLiteral); binder() .withSource(getCurrentStackElement()) .bind(typeLiteral).to(clazz), binder() .withSource(getCurrentStackElement()) .bind(clazz),