java.lang.Object
tech.guilhermekaua.spigotboot.core.context.dependency.manager.DependencyManager
All Implemented Interfaces:
BeanPostProcessorRegistry

public class DependencyManager extends Object implements BeanPostProcessorRegistry
  • Constructor Details

  • Method Details

    • registerInjector

      public void registerInjector(@NotNull @NotNull CustomInjector injector)
      Registers a custom injector.

      Custom injectors allow modules to provide alternative ways of resolving dependencies. They are consulted in order before falling back to the default bean resolution.

      Parameters:
      injector - the custom injector to register, not null
    • registerBeanPostProcessor

      public void registerBeanPostProcessor(@NotNull @NotNull BeanPostProcessor beanPostProcessor)
    • getBeanPostProcessors

      @NotNull public @NotNull List<BeanPostProcessor> getBeanPostProcessors()
    • register

      public void register(@NotNull @NotNull BeanPostProcessor beanPostProcessor)
      Registers a post-processor. Implementations keep processors ordered by Ordered.getOrder().

      Delegates to registerBeanPostProcessor(BeanPostProcessor), which keeps the registered processors ordered by Ordered.getOrder().

      Specified by:
      register in interface BeanPostProcessorRegistry
      Parameters:
      beanPostProcessor - the post-processor to register, not null
    • getBeanPostProcessorRegistry

      @NotNull public @NotNull BeanPostProcessorRegistry getBeanPostProcessorRegistry()
      Returns this manager viewed as a BeanPostProcessorRegistry, so callers can contribute post-processors without depending on the rest of the manager's API.
      Returns:
      the bean post-processor registry, never null
    • initializeBean

      @NotNull public @NotNull Object initializeBean(@NotNull @NotNull BeanDefinition definition, @NotNull @NotNull Object rawInstance)
    • resolveDependency

      public <T> T resolveDependency(@NotNull @NotNull Class<T> clazz, @Nullable @Nullable String qualifier)
    • resolveDependency

      public <T> T resolveDependency(@NotNull @NotNull Class<T> clazz, @Nullable @Nullable String qualifier, Supplier<T> fallback)
    • resolveDependency

      @Nullable public <T> T resolveDependency(@NotNull @NotNull InjectionPoint injectionPoint)
      Resolves a dependency for the given injection point.

      This method first consults all registered custom injectors in order. If any injector handles the injection point, its result is returned. Otherwise, the default resolution using the bean registry is performed.

      Parameters:
      injectionPoint - the injection point to resolve, not null
      Returns:
      the resolved dependency, or null if not found
    • registerDependency

      public <T> T registerDependency(@NotNull T instance, @Nullable @Nullable String qualifier, boolean primary)
    • registerDependency

      public <T> T registerDependency(@NotNull T instance, @Nullable @Nullable String qualifier, boolean primary, @Nullable @Nullable DependencyReloadCallback reloadCallback)
    • registerDependency

      public <T> T registerDependency(@NotNull @NotNull Class<T> clazz, @NotNull T instance, @Nullable @Nullable String qualifier, boolean primary)
    • registerDependency

      public <T> T registerDependency(@NotNull @NotNull Class<T> clazz, @NotNull T instance, @Nullable @Nullable String qualifier, boolean primary, @Nullable @Nullable DependencyReloadCallback reloadCallback)
    • registerDependency

      public <T> T registerDependency(@NotNull @NotNull Class<T> dependencyClass, @Nullable @Nullable String qualifier, boolean primary, DependencyResolveResolver<T> resolver)
    • registerDependency

      public <T> T registerDependency(@NotNull @NotNull Class<T> dependencyClass, @Nullable @Nullable String qualifier, boolean primary, DependencyResolveResolver<T> resolver, @Nullable @Nullable DependencyReloadCallback reloadCallback)
    • registerDependency

      public <T> T registerDependency(@NotNull @NotNull Class<T> clazz, @NotNull @NotNull Class<? extends T> dependencyClass, @Nullable @Nullable String qualifier, boolean primary, @Nullable @Nullable DependencyResolveResolver<T> resolver)
    • registerDependency

      public <T> T registerDependency(@NotNull @NotNull Class<T> clazz, @NotNull @NotNull Class<? extends T> dependencyClass, @Nullable @Nullable String qualifier, boolean primary, @Nullable @Nullable DependencyResolveResolver<T> resolver, @Nullable @Nullable DependencyReloadCallback reloadCallback)
    • registerDependency

      public <T> T registerDependency(@NotNull @NotNull Class<T> clazz, @NotNull @NotNull Class<? extends T> dependencyClass, @Nullable @Nullable String qualifier, boolean primary)
    • registerDependency

      public <T> BeanDefinition registerDependency(@NotNull @NotNull Class<T> clazz, @NotNull @NotNull Class<? extends T> dependencyClass, @Nullable T instance, @Nullable @Nullable String qualifier, boolean primary, @Nullable @Nullable DependencyResolveResolver<? extends T> resolver)
    • registerDependency

      public <T> BeanDefinition registerDependency(@NotNull @NotNull Class<T> clazz, @NotNull @NotNull Class<? extends T> dependencyClass, @Nullable T instance, @Nullable @Nullable String qualifier, boolean primary, @Nullable @Nullable DependencyResolveResolver<? extends T> resolver, @Nullable @Nullable DependencyReloadCallback reloadCallback)
    • reloadDependencies

      public void reloadDependencies()
    • getInstancesByType

      @NotNull public <T> @NotNull List<T> getInstancesByType(@NotNull @NotNull Class<T> type)
    • resolveFromDefinition

      public <T> T resolveFromDefinition(@NotNull @NotNull Class<T> requestedType, @NotNull @NotNull BeanDefinition definition) throws Exception
      Throws:
      Exception
    • resolveArguments

      public Object[] resolveArguments(@NotNull @NotNull Parameter[] parameters)
    • resolveArguments

      public Object[] resolveArguments(@NotNull @NotNull Executable executable)
    • injectDependencies

      public <T> void injectDependencies(Class<T> clazz, @NotNull T instance)
    • injectDependencies

      public <T> void injectDependencies(@NotNull T instance)
    • findInjectConstructor

      @Nullable public @Nullable Constructor<?> findInjectConstructor(@NotNull @NotNull Class<?> type)
    • clear

      public void clear()