Interface BeanDefinitionRegistry

All Known Subinterfaces:
ApplicationContext, BeanContext, ConfigurableApplicationContext, ConfigurableBeanContext
All Known Implementing Classes:
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
    • registerBeanConfiguration

      default @NonNull BeanDefinitionRegistry registerBeanConfiguration(BeanConfiguration configuration)
      Registers a bean configuration. This allows disabling a set of beans based on a condition.
      Parameters:
      configuration - The configuration
      Returns:
      The registry
      Since:
      4.8.0
    • registerBeanDefinition

      default <B> @NonNull 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

      <T> @NonNull 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

      <T> @NonNull 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

      default <T> @NonNull 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

      default <T> @NonNull 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

      <T> @NonNull Optional<BeanRegistration<T>> findBeanRegistration(@NonNull T bean)
      Obtain a BeanRegistration 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
    • findBeanDefinition

      default <T> @NonNull Optional<BeanDefinition<T>> findBeanDefinition(@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
      Since:
      4.3.0
    • getBeanDefinitions

      <T> @NonNull 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

      default <T> @NonNull 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

      <T> @NonNull 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

      default <T> @NonNull 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<Object>> 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<Object>> getAllBeanDefinitions()
      Get all registered BeanDefinition.
      Returns:
      The bean definitions
    • getBeanDefinitionReferences

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

      default @NonNull Collection<DisabledBean<?>> getDisabledBeans()
      Get all 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

      <T> @NonNull 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

      <T> @NonNull 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

      <T> @NonNull 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

      default <T> @NonNull 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

      <T> @NonNull 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

      default <T> @NonNull 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

      <T> @NonNull 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

      <T> @NonNull 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

      default <T> @NonNull 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

      default <T> @NonNull 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

      default <T> @NonNull 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

      <T> @NonNull 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

      @Deprecated(forRemoval=true, since="5.0") default <T> @NonNull BeanDefinitionRegistry registerSingleton(@NonNull Class<T> type, @NonNull T singleton, @Nullable Qualifier<T> qualifier)
      Deprecated, for removal: This API element is subject to removal in a future version.

      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

      @Deprecated(forRemoval=true, since="5.0") default <T> @NonNull BeanDefinitionRegistry registerSingleton(@NonNull Class<T> type, @NonNull T singleton)
      Deprecated, for removal: This API element is subject to removal in a future version.

      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
    • registerSingleton

      @Deprecated(forRemoval=true, since="5.0") default @NonNull BeanDefinitionRegistry registerSingleton(@NonNull Object singleton)
      Deprecated, for removal: This API element is subject to removal in a future version.

      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

      @Deprecated(forRemoval=true, since="5.0") default @NonNull BeanDefinitionRegistry registerSingleton(@NonNull Object singleton, boolean inject)
      Deprecated, for removal: This API element is subject to removal in a future version.

      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
    • getBeanDefinition

      default <T> @NonNull 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

      default <T> @NonNull 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
      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

      default <T> @NonNull 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

      default <T> @NonNull 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

      default <T> @NonNull 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

      default <T> @NonNull 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

      default <T> @NonNull 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
    • 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