# Class DefaultInjector

java.lang.Object
org.apache.cayenne.di.spi.DefaultInjector

All Implemented Interfaces:
  `Injector`

public class DefaultInjector extends Object implements Injector
A default Cayenne implementations of a DI injector.

Since:
  3.1

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultInjector(Module... modules)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<T> T`
  `getInstance(Class<T> type)`
  Returns a service instance bound in the container for a specific type.
  `<T> T`
  `getInstance(Key<T> key)`
  Returns a service instance bound in the container for a specific binding key.
  `<T> Provider<T>`
  `getProvider(Class<T> type)`
  `<T> Provider<T>`
  `getProvider(Key<T> key)`
  `void`
  `injectMembers(Object object)`
  Performs field injection on a given object, ignoring constructor injection.
  `void`
  `shutdown()`
  A lifecycle method that let's the injector's services to clean up their state and release resources.

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### DefaultInjector

    public DefaultInjector(Module... modules) throws DIRuntimeException
    Throws:
      `DIRuntimeException`

- ## Method Details

  - ### getInstance

    public <T> T getInstance(Class<T> type) throws DIRuntimeException
    Description copied from interface: `Injector`
    Returns a service instance bound in the container for a specific type. Throws `DIRuntimeException` if the type is not bound, or an instance can not be created.
    Specified by:
      `getInstance` in interface `Injector`
    Throws:
      `DIRuntimeException`

  - ### getInstance

    public <T> T getInstance(Key<T> key) throws DIRuntimeException
    Description copied from interface: `Injector`
    Returns a service instance bound in the container for a specific binding key. Throws `DIRuntimeException` if the key is not bound, or an instance can not be created.
    Specified by:
      `getInstance` in interface `Injector`
    Throws:
      `DIRuntimeException`

  - ### getProvider

    public <T> Provider<T> getProvider(Class<T> type) throws DIRuntimeException
    Specified by:
      `getProvider` in interface `Injector`
    Throws:
      `DIRuntimeException`

  - ### getProvider

    public <T> Provider<T> getProvider(Key<T> key) throws DIRuntimeException
    Specified by:
      `getProvider` in interface `Injector`
    Throws:
      `DIRuntimeException`

  - ### injectMembers

    public void injectMembers(Object object)
    Description copied from interface: `Injector`
    Performs field injection on a given object, ignoring constructor injection. Since Cayenne DI injector returns fully injected objects, this method is rarely used directly.

    Note that using this method inside a custom DI `Provider` will most likely result in double injection, as custom provider is wrapped in a field-injecting provider by the DI container. Instead custom providers must initialize object properties manually, obtaining dependencies from Injector.

    Specified by:
      `injectMembers` in interface `Injector`

  - ### shutdown

    public void shutdown()
    Description copied from interface: `Injector`
    A lifecycle method that let's the injector's services to clean up their state and release resources. This method would normally generate a scope end event for the injector's one and only singleton scope.
    Specified by:
      `shutdown` in interface `Injector`