Package org.picocontainer.injectors

# Class SetterInjector<T>

java.lang.Object
org.picocontainer.adapters.AbstractAdapter<T>
org.picocontainer.injectors.AbstractInjector<T>
org.picocontainer.injectors.IterativeInjector<T>
org.picocontainer.injectors.SetterInjector<T>

All Implemented Interfaces:
  `Serializable`, `ComponentAdapter<T>`, `ComponentMonitorStrategy`, `Injector<T>`

Direct Known Subclasses:
  `AnnotatedMethodInjector`, `NamedMethodInjector`

public class SetterInjector<T> extends IterativeInjector<T>
Instantiates components using empty constructors and Setter Injection. For easy setting of primitive properties, also see `PropertyApplicator`.

Note that this class doesn't cache instances. If you want caching, use a `Cached` around this one.

Author:
  Aslak Hellesøy, Jörg Schaible, Mauro Talevi, Paul Hammant
See Also:
  - Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from class org.picocontainer.injectors.AbstractInjector

`AbstractInjector.AmbiguousComponentResolutionException, AbstractInjector.CyclicDependencyException, AbstractInjector.NotConcreteRegistrationException, AbstractInjector.UnsatisfiableDependenciesException`

## Nested classes/interfaces inherited from interface org.picocontainer.ComponentAdapter

`ComponentAdapter.NOTHING`

## Field Summary

Fields
Modifier and Type
Field
Description
`protected final String`
`prefix`

### Fields inherited from class org.picocontainer.injectors.IterativeInjector

`bindings, injectionMembers, injectionTypes`

### Fields inherited from class org.picocontainer.injectors.AbstractInjector

`parameters, verifyingGuard`

## Constructor Summary

Constructors
Constructor
Description
`SetterInjector(Object componentKey, Class componentImplementation, Parameter[] parameters, ComponentMonitor monitor, String prefix, String notThisOneThough, boolean optional, boolean useNames)`
Constructs a SetterInjector

## Method Summary

Modifier and Type
Method
Description
`String`
`getDescriptor()`
Get a string key descriptor of the component adapter for use in toString()
`protected String`
`getInjectorPrefix()`
`protected Object`
`injectIntoMember(AccessibleObject member, Object componentInstance, Object toInject)`
`protected boolean`
`isInjectorMethod(Method method)`
`protected Object`
`memberInvocationReturn(Object lastReturn, AccessibleObject member, Object instance)`
`protected void`
`unsatisfiedDependencies(PicoContainer container, Set<Type> unsatisfiableDependencyTypes, List<AccessibleObject> unsatisfiableDependencyMembers)`

### Methods inherited from class org.picocontainer.injectors.IterativeInjector

`crudeMethodSignature, decorateComponentInstance, getComponentInstance, getConstructor, getName, initializeInjectionMembersAndTypeLists, makeParameterNameImpl, verify`

### Methods inherited from class org.picocontainer.injectors.AbstractInjector

`accept, box, caughtIllegalAccessException, caughtIllegalAccessException, caughtInstantiationException, caughtInvocationTargetException, createDefaultParameters, getComponentInstance, newInstance, useNames`

### Methods inherited from class org.picocontainer.adapters.AbstractAdapter

`changeMonitor, checkTypeCompatibility, currentMonitor, findAdapterOfType, getComponentImplementation, getComponentKey, getDelegate, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface org.picocontainer.ComponentAdapter

`findAdapterOfType, getComponentImplementation, getComponentKey, getDelegate`

## Field Details

### prefix

protected final String prefix

## Constructor Details

### SetterInjector

public SetterInjector(Object componentKey, Class componentImplementation, Parameter[] parameters, ComponentMonitor monitor, String prefix, String notThisOneThough, boolean optional, boolean useNames) throws AbstractInjector.NotConcreteRegistrationException
Constructs a SetterInjector

Parameters:
  `componentKey` - the search key for this implementation
  `componentImplementation` - the concrete implementation
  `parameters` - the parameters to use for the initialization
  `monitor` - the component monitor used by this addAdapter
  `prefix` - the prefix to use (e.g. 'set')
  `notThisOneThough` - a setter name that's not for injecting through
  `optional` - not all setters need to be injected
  `useNames` - @throws org.picocontainer.injectors.AbstractInjector.NotConcreteRegistrationException if the implementation is not a concrete class.
Throws:
  `NullPointerException` - if one of the parameters is `null`
  `AbstractInjector.NotConcreteRegistrationException`

## Method Details

### memberInvocationReturn

protected Object memberInvocationReturn(Object lastReturn, AccessibleObject member, Object instance)

Specified by:
  `memberInvocationReturn` in class `IterativeInjector<T>`

### injectIntoMember

protected Object injectIntoMember(AccessibleObject member, Object componentInstance, Object toInject) throws IllegalAccessException, InvocationTargetException

Specified by:
  `injectIntoMember` in class `IterativeInjector<T>`
Throws:
  `IllegalAccessException`
  `InvocationTargetException`

### isInjectorMethod

protected boolean isInjectorMethod(Method method)

Overrides:
  `isInjectorMethod` in class `IterativeInjector<T>`

### getInjectorPrefix

protected String getInjectorPrefix()

### getDescriptor

public String getDescriptor()
Description copied from interface: `ComponentAdapter`
Get a string key descriptor of the component adapter for use in toString()

Specified by:
  `getDescriptor` in interface `ComponentAdapter<T>`
Overrides:
  `getDescriptor` in class `AbstractInjector<T>`
Returns:
  the descriptor

### unsatisfiedDependencies

protected void unsatisfiedDependencies(PicoContainer container, Set<Type> unsatisfiableDependencyTypes, List<AccessibleObject> unsatisfiableDependencyMembers)

Specified by:
  `unsatisfiedDependencies` in class `IterativeInjector<T>`