Interface BeanDefinitionRegistry

All Known Subinterfaces:
ApplicationContext, BeanContext, InitializableBeanContext
All Known Implementing Classes:
DefaultApplicationContext, DefaultBeanContext

public interface BeanDefinitionRegistry

Core bean definition registry interface containing methods to find BeanDefinition instances.

Since:
1.0
Author:
Graeme Rocher
  • Method Details

    • containsBean

      <T> boolean containsBean(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Return whether the bean of the given type is contained within this context.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      qualifier - The qualifier for the bean
      Returns:
      True if it is
    • containsBean

      default <T> boolean containsBean(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Return whether the bean of the given type is contained within this context.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      qualifier - The qualifier for the bean
      Returns:
      True if it is
      Since:
      3.0.0
    • containsBean

      default <T> boolean containsBean(@NonNull Argument<T> beanType)
      Return whether the bean of the given type is contained within this context.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      Returns:
      True if it is
      Since:
      3.0.0
    • registerBeanDefinition

      @NonNull default <B> BeanDefinitionRegistry registerBeanDefinition(@NonNull RuntimeBeanDefinition<B> definition)
      Registers a new reference at runtime. Not that registering beans can impact the object graph therefore should this should be done as soon as possible prior to the creation of other beans preferably with a high priority Context scope bean.
      Type Parameters:
      B - The bean type
      Parameters:
      definition - The reference.
      Returns:
      The registry
      Since:
      3.6.0
    • registerSingleton

      @NonNull <T> BeanDefinitionRegistry registerSingleton(@NonNull Class<T> type, @NonNull T singleton, @Nullable Qualifier<T> qualifier, boolean inject)

      Registers a new singleton bean at runtime. This method expects that the bean definition data will have been compiled ahead of time.

      If bean definition data is found the method will perform dependency injection on the instance followed by invoking any PostConstruct hooks.

      If no bean definition data is found the bean is registered as is.

      Type Parameters:
      T - The concrete type
      Parameters:
      type - The bean type
      singleton - The singleton bean
      qualifier - The bean qualifier
      inject - Whether the singleton should be injected (defaults to true)
      Returns:
      This bean context
    • findBeanConfiguration

      @NonNull Optional<BeanConfiguration> findBeanConfiguration(@NonNull String configurationName)
      Obtain a bean configuration by name.
      Parameters:
      configurationName - The configuration name
      Returns:
      An optional with the configuration either present or not
    • findBeanDefinition

      @NonNull <T> Optional<BeanDefinition<T>> findBeanDefinition(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • findBeanDefinition

      @NonNull default <T> Optional<BeanDefinition<T>> findBeanDefinition(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The potentially parameterized type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      Since:
      3.0.0
    • findBeanDefinition

      @NonNull default <T> Optional<BeanDefinition<T>> findBeanDefinition(@NonNull Argument<T> beanType)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The potentially parameterized type
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      Since:
      3.0.0
    • findBeanRegistration

      @NonNull <T> Optional<BeanRegistration<T>> findBeanRegistration(@NonNull T bean)
      Obtain a BeanDefinition for the given bean.
      Type Parameters:
      T - The concrete type
      Parameters:
      bean - The bean
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • getBeanDefinitions

      @NonNull <T> Collection<BeanDefinition<T>> getBeanDefinitions(@NonNull Class<T> beanType)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • getBeanDefinitions

      @NonNull default <T> Collection<BeanDefinition<T>> getBeanDefinitions(@NonNull Argument<T> beanType)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      Since:
      3.0.0
    • getBeanDefinitions

      @NonNull <T> Collection<BeanDefinition<T>> getBeanDefinitions(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • getBeanDefinitions

      @NonNull default <T> Collection<BeanDefinition<T>> getBeanDefinitions(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      Since:
      3.0.0
    • getBeanDefinitions

      @NonNull Collection<BeanDefinition<?>> getBeanDefinitions(@NonNull Qualifier<Object> qualifier)
      Get all of the BeanDefinition for the given qualifier.
      Parameters:
      qualifier - The qualifier
      Returns:
      The bean definitions
    • getAllBeanDefinitions

      @NonNull Collection<BeanDefinition<?>> getAllBeanDefinitions()
      Get all of the registered BeanDefinition.
      Returns:
      The bean definitions
    • getBeanDefinitionReferences

      @NonNull Collection<BeanDefinitionReference<?>> getBeanDefinitionReferences()
      Get all of the enabled BeanDefinitionReference.
      Returns:
      The bean definitions
    • getDisabledBeans

      @NonNull default Collection<DisabledBean<?>> getDisabledBeans()
      Get all of the disabled DisabledBean.
      Returns:
      The disabled bean definitions
      Since:
      4.0.0
    • getActiveBeanRegistrations

      @NonNull Collection<BeanRegistration<?>> getActiveBeanRegistrations(@NonNull Qualifier<?> qualifier)
      Find active Singleton beans for the given qualifier. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
      Parameters:
      qualifier - The qualifier
      Returns:
      The beans
    • getActiveBeanRegistrations

      @NonNull <T> Collection<BeanRegistration<T>> getActiveBeanRegistrations(@NonNull Class<T> beanType)
      Find active Singleton beans for the given bean type. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      Returns:
      The beans
    • getBeanRegistrations

      @NonNull <T> Collection<BeanRegistration<T>> getBeanRegistrations(@NonNull Class<T> beanType)
      Find and if necessary initialize Singleton beans for the given bean type, returning all the active registrations. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      Returns:
      The beans
    • getBeanRegistrations

      @NonNull <T> Collection<BeanRegistration<T>> getBeanRegistrations(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Find and if necessary initialize Singleton beans for the given bean type, returning all the active registrations. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      qualifier - The qualifier
      Returns:
      The beans
      Since:
      2.4.0
    • getBeanRegistrations

      @NonNull default <T> Collection<BeanRegistration<T>> getBeanRegistrations(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Find and if necessary initialize Singleton beans for the given bean type, returning all the active registrations. Note that this method can return multiple registrations for a given singleton bean instance since each bean may have multiple qualifiers.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      qualifier - The qualifier
      Returns:
      The beans
      Since:
      3.0.0
    • getBeanRegistration

      @NonNull <T> BeanRegistration<T> getBeanRegistration(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Find a bean registration for the given bean type and optional qualifier.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The bean type
      qualifier - The qualifier
      Returns:
      The bean registration
      Throws:
      NoSuchBeanException - if the bean doesn't exist
      Since:
      2.4.0
    • getBeanRegistration

      @NonNull default <T> BeanRegistration<T> getBeanRegistration(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Find a bean registration for the given bean type and optional qualifier.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The potentially parameterized bean type
      qualifier - The qualifier
      Returns:
      The bean registration
      Throws:
      NoSuchBeanException - if the bean doesn't exist
      Since:
      3.0.0
    • getBeanRegistration

      @NonNull <T> BeanRegistration<T> getBeanRegistration(@NonNull BeanDefinition<T> beanDefinition)
      Find a bean registration for the given bean definition.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanDefinition - The bean definition
      Returns:
      The bean registration
      Throws:
      NoSuchBeanException - if the bean doesn't exist
      Since:
      3.5.0
    • findProxyTargetBeanDefinition

      @NonNull <T> Optional<BeanDefinition<T>> findProxyTargetBeanDefinition(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain the original BeanDefinition for a ProxyBeanDefinition.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • findProxyTargetBeanDefinition

      @NonNull default <T> Optional<BeanDefinition<T>> findProxyTargetBeanDefinition(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain the original BeanDefinition for a ProxyBeanDefinition.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • findProxyTargetBeanDefinition

      @NonNull default <T> Optional<BeanDefinition<T>> findProxyTargetBeanDefinition(@NonNull BeanDefinition<T> proxyBeanDefinition)
      Obtain the original BeanDefinition for a ProxyBeanDefinition.
      Type Parameters:
      T - The concrete type
      Parameters:
      proxyBeanDefinition - The proxy bean definition
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      Since:
      3.5.0
    • findProxyBeanDefinition

      @NonNull <T> Optional<BeanDefinition<T>> findProxyBeanDefinition(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain the proxy BeanDefinition for the bean of type and qualifier.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • findProxyBeanDefinition

      @NonNull <T> Optional<BeanDefinition<T>> findProxyBeanDefinition(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain the proxy BeanDefinition for the bean of type and qualifier.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • registerSingleton

      @NonNull default <T> BeanDefinitionRegistry registerSingleton(@NonNull Class<T> type, @NonNull T singleton, @Nullable Qualifier<T> qualifier)

      Registers a new singleton bean at runtime. This method expects that the bean definition data will have been compiled ahead of time.

      If bean definition data is found the method will perform dependency injection on the instance followed by invoking any PostConstruct hooks.

      If no bean definition data is found the bean is registered as is.

      Type Parameters:
      T - The concrete type
      Parameters:
      type - The bean type
      singleton - The singleton bean
      qualifier - The bean qualifier
      Returns:
      This bean context
    • registerSingleton

      default <T> BeanDefinitionRegistry registerSingleton(@NonNull Class<T> type, @NonNull T singleton)

      Registers a new singleton bean at runtime. This method expects that the bean definition data will have been compiled ahead of time.

      If bean definition data is found the method will perform dependency injection on the instance followed by invoking any PostConstruct hooks.

      If no bean definition data is found the bean is registered as is.

      Type Parameters:
      T - The concrete type
      Parameters:
      type - the bean type
      singleton - The singleton bean
      Returns:
      This bean context
    • getBeanDefinition

      @NonNull default <T> BeanDefinition<T> getBeanDefinition(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      The BeanDefinition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      NoSuchBeanException - If the bean cannot be found
    • getBeanDefinition

      @NonNull default <T> BeanDefinition<T> getBeanDefinition(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The potentially parameterized type type
      qualifier - The qualifier
      Returns:
      The BeanDefinition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      NoSuchBeanException - If the bean cannot be found
      Since:
      3.0.
    • getProxyTargetBeanDefinition

      @NonNull default <T> BeanDefinition<T> getProxyTargetBeanDefinition(@NonNull Class<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain the original BeanDefinition for a ProxyBeanDefinition.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      The BeanDefinition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      NoSuchBeanException - If the bean cannot be found
    • getProxyTargetBeanDefinition

      @NonNull default <T> BeanDefinition<T> getProxyTargetBeanDefinition(@NonNull Argument<T> beanType, @Nullable Qualifier<T> qualifier)
      Obtain the original BeanDefinition for a ProxyBeanDefinition.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      qualifier - The qualifier
      Returns:
      The BeanDefinition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      NoSuchBeanException - If the bean cannot be found
      Since:
      3.0.0
    • getBeanDefinition

      @NonNull default <T> BeanDefinition<T> getBeanDefinition(@NonNull Class<T> beanType)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      Returns:
      The BeanDefinition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      NoSuchBeanException - If the bean cannot be found
    • getBeanDefinition

      @NonNull default <T> BeanDefinition<T> getBeanDefinition(@NonNull Argument<T> beanType)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      Returns:
      The BeanDefinition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
      NoSuchBeanException - If the bean cannot be found
      Since:
      3.0.0
    • findBeanDefinition

      @NonNull default <T> Optional<BeanDefinition<T>> findBeanDefinition(@NonNull Class<T> beanType)
      Obtain a BeanDefinition for the given type.
      Type Parameters:
      T - The concrete type
      Parameters:
      beanType - The type
      Returns:
      An Optional of the bean definition
      Throws:
      NonUniqueBeanException - When multiple possible bean definitions exist for the given type
    • registerSingleton

      @NonNull default BeanDefinitionRegistry registerSingleton(@NonNull Object singleton)

      Registers a new singleton bean at runtime. This method expects that the bean definition data will have been compiled ahead of time.

      If bean definition data is found the method will perform dependency injection on the instance followed by invoking any PostConstruct hooks.

      If no bean definition data is found the bean is registered as is.

      Parameters:
      singleton - The singleton bean
      Returns:
      This bean context
    • registerSingleton

      @NonNull default BeanDefinitionRegistry registerSingleton(@NonNull Object singleton, boolean inject)

      Registers a new singleton bean at runtime. This method expects that the bean definition data will have been compiled ahead of time.

      If bean definition data is found the method will perform dependency injection on the instance followed by invoking any PostConstruct hooks.

      If no bean definition data is found the bean is registered as is.

      Parameters:
      singleton - The singleton bean
      inject - Whether the singleton should be injected (defaults to true)
      Returns:
      This bean context
    • containsBean

      default boolean containsBean(@NonNull Class<?> beanType)
      Return whether the bean of the given type is contained within this context.
      Parameters:
      beanType - The bean type
      Returns:
      True if it is