Package org.picocontainer.injectors
Class MethodInjector<T>
java.lang.Object
org.picocontainer.adapters.AbstractAdapter<T>
org.picocontainer.injectors.AbstractInjector<T>
org.picocontainer.injectors.SingleMemberInjector<T>
org.picocontainer.injectors.MethodInjector<T>
- All Implemented Interfaces:
Serializable,ComponentAdapter<T>,ComponentMonitorStrategy,Injector<T>
- Direct Known Subclasses:
MethodInjector.ByMethodName,MethodInjector.ByReflectionMethod
Injection will happen through a single method for the component.
Most likely it is a method called 'inject', though that can be overridden.
- Author:
- Paul Hammant, Aslak Hellesøy, Jon Tirsén, Zohar Melamed, Jörg Schaible, Mauro Talevi
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classstatic classNested classes/interfaces inherited from class org.picocontainer.injectors.SingleMemberInjector
SingleMemberInjector.ParameterCannotBeNullExceptionNested classes/interfaces inherited from class org.picocontainer.injectors.AbstractInjector
AbstractInjector.AmbiguousComponentResolutionException, AbstractInjector.CyclicDependencyException, AbstractInjector.NotConcreteRegistrationException, AbstractInjector.UnsatisfiableDependenciesExceptionNested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter
ComponentAdapter.NOTHING -
Field Summary
Fields inherited from class org.picocontainer.injectors.AbstractInjector
parameters, verifyingGuard -
Constructor Summary
ConstructorsConstructorDescriptionMethodInjector(Object componentKey, Class componentImplementation, Parameter[] parameters, ComponentMonitor monitor, String methodName, boolean useNames) Creates a MethodInjector -
Method Summary
Modifier and TypeMethodDescriptiondecorateComponentInstance(PicoContainer container, Type into, T instance) A preexiting component instance can be injected into after instantiationgetComponentInstance(PicoContainer container, Type into) Retrieve the component instance.protected abstract Methodprotected Object[]getMemberArguments(PicoContainer container, Method method) protected booleanisNullParamAllowed(AccessibleObject member, int i) Checks to see if a null parameter is allowed in the given constructor/field/method.voidverify(PicoContainer container) Verify that all dependencies for this adapter can be satisfied.Methods inherited from class org.picocontainer.injectors.SingleMemberInjector
boxParameters, getBindings, getMemberArguments, getParameter, getParanamer, nullCheckMethods inherited from class org.picocontainer.injectors.AbstractInjector
accept, box, caughtIllegalAccessException, caughtIllegalAccessException, caughtInstantiationException, caughtInvocationTargetException, createDefaultParameters, getComponentInstance, getDescriptor, newInstance, useNamesMethods inherited from class org.picocontainer.adapters.AbstractAdapter
changeMonitor, checkTypeCompatibility, currentMonitor, findAdapterOfType, getComponentImplementation, getComponentKey, getDelegate, toStringMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.picocontainer.ComponentAdapter
findAdapterOfType, getComponentImplementation, getComponentKey, getDelegate
-
Constructor Details
-
MethodInjector
public MethodInjector(Object componentKey, Class componentImplementation, Parameter[] parameters, ComponentMonitor monitor, String methodName, boolean useNames) throws AbstractInjector.NotConcreteRegistrationException Creates a MethodInjector- Parameters:
componentKey- the search key for this implementationcomponentImplementation- the concrete implementationparameters- the parameters to use for the initializationmonitor- the component monitor used by this addAdaptermethodName- the method nameuseNames- use argument names when looking up dependencies- Throws:
AbstractInjector.NotConcreteRegistrationException- if the implementation is not a concrete class.NullPointerException- if one of the parameters isnull
-
-
Method Details
-
getInjectorMethod
-
getComponentInstance
Description copied from interface:ComponentAdapterRetrieve the component instance. This method will usually create a new instance each time it is called, but that is not required. For example,Cachedwill always return the same instance.- Specified by:
getComponentInstancein interfaceComponentAdapter<T>- Specified by:
getComponentInstancein classAbstractInjector<T>- Parameters:
container- thePicoContainer, that is used to resolve any possible dependencies of the instance.into- the class that is about to be injected into. Use ComponentAdapter.NOTHING.class if this is not important to you.- Returns:
- the component instance.
- Throws:
PicoCompositionException- if the component has dependencies which could not be resolved, or instantiation of the component lead to an ambiguous situation within the container.
-
getMemberArguments
-
decorateComponentInstance
Description copied from interface:InjectorA preexiting component instance can be injected into after instantiation- Specified by:
decorateComponentInstancein interfaceInjector<T>- Overrides:
decorateComponentInstancein classAbstractInjector<T>- Parameters:
container- the container that can provide injectable dependenciesinto-instance- the instance to- Returns:
-
verify
Description copied from interface:ComponentAdapterVerify that all dependencies for this adapter can be satisfied. Normally, the adapter should verify this by checking that the associated PicoContainer contains all the needed dependencies.- Specified by:
verifyin interfaceComponentAdapter<T>- Overrides:
verifyin classAbstractInjector<T>- Parameters:
container- thePicoContainer, that is used to resolve any possible dependencies of the instance.- Throws:
PicoCompositionException- if one or more dependencies cannot be resolved.
-
isNullParamAllowed
Description copied from class:SingleMemberInjectorChecks to see if a null parameter is allowed in the given constructor/field/method. The default version allows null if the target object is not a primitive type.- Overrides:
isNullParamAllowedin classSingleMemberInjector<T>- Parameters:
member- constructor method or fieldi- parameter #.- Returns:
- true if the null parameter might be allowed.
-