Top Description Constructors Methods
com.google.inject.spi

public abstract Class ModuleAnnotatedMethodScanner

extends Object
Class Inheritance
Known Direct Subclasses
com.google.inject.internal.ProvidesMethodScanner
Imports
com.google.inject.Binder, .Key, java.lang.annotation.Annotation, java.util.Set

Allows extensions to scan modules for annotated methods and bind those methods as providers, similar to @Provides methods.
Since
4.0

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public abstract Set<? extends Class<? extends Annotation>>
annotationClasses()

Returns the annotations this should scan for.

public abstract <T> Key<T>
prepareMethod(Binder binder, Annotation annotation, Key<T> key, InjectionPoint injectionPoint)

Prepares a method for binding.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Constructor Detail

ModuleAnnotatedMethodScannerback to summary
public ModuleAnnotatedMethodScanner()

Method Detail

annotationClassesback to summary
public abstract Set<? extends Class<? extends Annotation>> annotationClasses()

Returns the annotations this should scan for. Every method in the module that has one of these annotations will create a Provider binding, with the return value of the binding being what's provided and the parameters of the method being dependencies of the provider.

prepareMethodback to summary
public abstract <T> Key<T> prepareMethod(Binder binder, Annotation annotation, Key<T> key, InjectionPoint injectionPoint)

Prepares a method for binding. This key parameter is the key discovered from looking at the binding annotation and return value of the method. Implementations can modify the key to instead bind to another key. For example, Multibinder may want to change @ProvidesIntoSet String provideFoo() to bind into a unique Key within the multibinder instead of binding String.

The injection point and annotation are provided in case the implementation wants to set the key based on the property of the annotation or if any additional preparation is needed for any of the dependencies. The annotation is guaranteed to be an instance of one the classes returned by annotationClasses.

Returning null will cause Guice to skip this method, so that it is not bound to any key.

If injectionPoint represents an abstract method, null must be returned from this method. This scanner can use binder to bind alternative bindings in place of the abstract method.