Class ContainerBuilder

java.lang.Object
org.apache.struts2.inject.ContainerBuilder

public final class ContainerBuilder extends Object
Builds a dependency injection Container. The combination of dependency type and name uniquely identifies a dependency mapping; you can use the same name for two different types. Not safe for concurrent use.

Adds the following factories by default:

  • Injects the current Container.
  • Injects the Logger for the injected member's declaring class.
Author:
crazybob@google.com (Bob Lee)
  • Constructor Details

    • ContainerBuilder

      public ContainerBuilder()
      Constructs a new builder.
  • Method Details

    • factory

      public <T> ContainerBuilder factory(Class<T> type, String name, Factory<? extends T> factory, Scope scope)
      Maps a factory to a given dependency type and name.
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      name - of dependency
      factory - creates objects to inject
      scope - scope of injected instances
      Returns:
      this builder
    • factory

      public <T> ContainerBuilder factory(Class<T> type, Factory<? extends T> factory, Scope scope)
      Convenience method. Equivalent to factory(type, Container.DEFAULT_NAME, factory, scope).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      factory - of dependency
      scope - scope of injected instances
      Returns:
      a container builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type, String name, Factory<? extends T> factory)
      Convenience method. Equivalent to factory(type, name, factory, Scope.PROTOTYPE).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      name - of dependency
      factory - of dependency
      Returns:
      a container builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type, Factory<? extends T> factory)
      Convenience method. Equivalent to factory(type, Container.DEFAULT_NAME, factory, Scope.PROTOTYPE).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      factory - of dependency
      Returns:
      a container builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type, String name, Class<? extends T> implementation, Scope scope)
      Maps an implementation class to a given dependency type and name. Creates instances using the container, recursively injecting dependencies.
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      name - of dependency
      implementation - class
      scope - scope of injected instances
      Returns:
      this builder
    • factory

      public <T> ContainerBuilder factory(Class<T> type, String name, Class<? extends T> implementation)

      Maps an implementation class to a given dependency type and name. Creates instances using the container, recursively injecting dependencies.

      Sets scope to value from Scoped annotation on the implementation class. Defaults to Scope.PROTOTYPE if no annotation is found.

      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      name - of dependency
      implementation - class
      Returns:
      this builder
    • factory

      public <T> ContainerBuilder factory(Class<T> type, Class<? extends T> implementation)
      Convenience method. Equivalent to factory(type, Container.DEFAULT_NAME, implementation).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      implementation - class
      Returns:
      this builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type)
      Convenience method. Equivalent to factory(type, Container.DEFAULT_NAME, type).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      Returns:
      this builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type, String name)
      Convenience method. Equivalent to factory(type, name, type).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      name - of dependency
      Returns:
      this builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type, Class<? extends T> implementation, Scope scope)
      Convenience method. Equivalent to factory(type, Container.DEFAULT_NAME, implementation, scope).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      implementation - class
      scope - the scope
      Returns:
      this builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type, Scope scope)
      Convenience method. Equivalent to factory(type, Container.DEFAULT_NAME, type, scope).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      scope - the scope
      Returns:
      this builder
      See Also:
    • factory

      public <T> ContainerBuilder factory(Class<T> type, String name, Scope scope)
      Convenience method. Equivalent to factory(type, name, type, scope).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      name - of dependency
      scope - the scope
      Returns:
      this builder
      See Also:
    • alias

      public <T> ContainerBuilder alias(Class<T> type, String alias)
      Convenience method. Equivalent to alias(type, Container.DEFAULT_NAME, type).
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      alias - of dependency
      Returns:
      this builder
      See Also:
    • alias

      public <T> ContainerBuilder alias(Class<T> type, String name, String alias)
      Maps an existing factory to a new name.
      Type Parameters:
      T - type
      Parameters:
      type - of dependency
      name - of dependency
      alias - of to the dependency
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, String value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, int value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, long value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, boolean value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, double value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - constant value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, float value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, short value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, char value)
      Maps a constant value to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public ContainerBuilder constant(String name, Class value)
      Maps a class to the given name.
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • constant

      public <E extends Enum<E>> ContainerBuilder constant(String name, E value)
      Maps an enum to the given name.
      Type Parameters:
      E - value type
      Parameters:
      name - name
      value - value
      Returns:
      this builder
    • injectStatics

      public ContainerBuilder injectStatics(Class<?>... types)
      Upon creation, the Container will inject static fields and methods into the given classes.
      Parameters:
      types - for which static members will be injected
      Returns:
      this builder
    • contains

      public boolean contains(Class<?> type, String name)
      Parameters:
      type - type of class
      name - name of class
      Returns:
      true if this builder contains a mapping for the given type and name.
    • contains

      public boolean contains(Class<?> type)
      Convenience method. Equivalent to contains(type, Container.DEFAULT_NAME).
      Parameters:
      type - type of class
      Returns:
      true if this builder contains a mapping for the given type.
    • create

      public Container create(boolean loadSingletons)
      Creates a Container instance. Injects static members for classes which were registered using injectStatics(Class...).
      Parameters:
      loadSingletons - If true, the container will load all singletons now. If false, the container will lazily load singletons. Eager loading is appropriate for production use while lazy loading can speed development.
      Returns:
      this builder
      Throws:
      IllegalStateException - if called more than once
    • setAllowDuplicates

      public void setAllowDuplicates(boolean val)