Class DIContainer


  • public class DIContainer
    extends java.lang.Object
    A simple dependency injection container.

    The container is thread-safe.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,​java.util.function.Supplier<java.lang.Object>> instances  
      private java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,​java.lang.Object> localInstances  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      <T> T getInstance​(java.lang.Class<T> clazz)
      Gets an instance of a class.
      boolean isRegistered​(java.lang.Class<?> clazz)
      Checks if an instance is registered for a class.
      void register​(java.lang.Class<?> clazz, java.lang.Object inst)
      Registers an instance for a class.
      static void registerDefault​(java.lang.Class<?> clazz, java.util.function.Supplier<java.lang.Object> supplier)
      Registers a default instance for a class.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • instances

        private static final java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,​java.util.function.Supplier<java.lang.Object>> instances
      • localInstances

        private final java.util.concurrent.ConcurrentHashMap<java.lang.Class<?>,​java.lang.Object> localInstances
    • Constructor Detail

      • DIContainer

        public DIContainer()
        Creates a new instance of DIContainer.
    • Method Detail

      • registerDefault

        public static void registerDefault​(java.lang.Class<?> clazz,
                                           java.util.function.Supplier<java.lang.Object> supplier)
        Registers a default instance for a class.
        Parameters:
        clazz - the class
        supplier - supplier of the instance
      • register

        public void register​(java.lang.Class<?> clazz,
                             java.lang.Object inst)
        Registers an instance for a class.
        Parameters:
        clazz - the class
        inst - the instance
      • getInstance

        public <T> T getInstance​(java.lang.Class<T> clazz)
        Gets an instance of a class.
        Type Parameters:
        T - the type of the class
        Parameters:
        clazz - the class
        Returns:
        the instance
      • isRegistered

        public boolean isRegistered​(java.lang.Class<?> clazz)
        Checks if an instance is registered for a class. If the class is registered but the value is null, it will still return true.
        Parameters:
        clazz - the class
        Returns:
        true if an instance is registered, false otherwise