Interface RuntimeBeanDefinition<T>

Type Parameters:
T - The bean type
All Superinterfaces:
io.micronaut.core.annotation.AnnotationMetadata, io.micronaut.core.annotation.AnnotationMetadataDelegate, io.micronaut.core.annotation.AnnotationMetadataProvider, io.micronaut.core.annotation.AnnotationSource, io.micronaut.core.type.ArgumentCoercible<T>, BeanContextConditional, BeanDefinition<T>, BeanDefinitionReference<T>, io.micronaut.core.beans.BeanInfo<T>, BeanType<T>, InstantiatableBeanDefinition<T>, io.micronaut.core.naming.Named, io.micronaut.core.order.Ordered, QualifiedBeanType<T>

public interface RuntimeBeanDefinition<T> extends BeanDefinitionReference<T>, InstantiatableBeanDefinition<T>, BeanContextConditional
Allow the construction for bean definitions programmatically that can be registered via BeanDefinitionRegistry at runtime.

This differs from BeanDefinitionRegistry.registerSingleton(Object) in that beans registered this way can be created lazily or not at all and participate more completely in the life cycle of the BeanContext (for examples event listeners like BeanCreatedEventListener will be fired).

Note that it is generally not recommended to use this approach and build time bean computation is preferred. This type is designed to support a few limited use cases where runtime bean registration is required.

Since:
3.6.0
See Also:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Interface
    Description
    static interface 
    A builder for constructing RuntimeBeanDefinition instances.
  • Field Summary

    Fields inherited from interface io.micronaut.core.annotation.AnnotationMetadata

    CLASS_NAME_SUFFIX, EMPTY_METADATA, VALUE_MEMBER

    Fields inherited from interface io.micronaut.core.annotation.AnnotationSource

    EMPTY

    Fields inherited from interface io.micronaut.core.order.Ordered

    HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
  • Method Summary

    Modifier and Type
    Method
    Description
    static <B> @NonNull RuntimeBeanDefinition.Builder<B>
    builder(@NonNull io.micronaut.core.type.Argument<B> beanType, @NonNull Supplier<B> beanSupplier)
    A new builder for constructing and configuring runtime created beans.
    static <B> @NonNull RuntimeBeanDefinition.Builder<B>
    builder(@NonNull Class<B> beanType, @NonNull Supplier<B> beanSupplier)
    A new builder for constructing and configuring runtime created beans.
    static <B> @NonNull RuntimeBeanDefinition.Builder<B>
    builder(B bean)
    A new builder for constructing and configuring runtime created beans.
    default @NonNull io.micronaut.core.annotation.AnnotationMetadata
     
    default String
     
    default List<io.micronaut.core.type.Argument<?>>
    Return the type arguments for the given interface or super type for this bean.
    default boolean
     
    default boolean
     
    default boolean
    isEnabled(@NonNull BeanContext context, BeanResolutionContext resolutionContext)
    Return whether this component is enabled for the given context.
    default boolean
     
    default boolean
     
    default BeanDefinition<T>
    Loads the bean definition.
    default BeanDefinition<T>
    load(BeanContext context)
    Loads the bean definition for the current BeanContext.
    static <B> @NonNull RuntimeBeanDefinition<B>
    of(@NonNull Class<B> beanType, @NonNull Supplier<B> beanSupplier)
    Creates a new bean definition that will resolve the bean from the given supplier.
    static <B> @NonNull RuntimeBeanDefinition<B>
    of(B bean)
    Creates a new effectively singleton bean definition that references the given bean.

    Methods inherited from interface io.micronaut.core.annotation.AnnotationMetadata

    enumValuesSet, enumValuesSet, getValues, hasDeclaredStereotype, hasEvaluatedExpressions, hasStereotypeNonRepeating, isAnnotationPresent, isDeclaredAnnotationPresent

    Methods inherited from interface io.micronaut.core.annotation.AnnotationMetadataDelegate

    booleanValue, booleanValue, booleanValue, booleanValue, classValue, classValue, classValue, classValue, classValues, classValues, classValues, classValues, copyAnnotationMetadata, doubleValue, doubleValue, doubleValue, enumValue, enumValue, enumValue, enumValue, enumValues, enumValues, enumValues, enumValues, findAnnotation, findAnnotation, findDeclaredAnnotation, findDeclaredAnnotation, findRepeatableAnnotation, findRepeatableAnnotation, getAnnotation, getAnnotation, getAnnotationNameByStereotype, getAnnotationNameByStereotype, getAnnotationNames, getAnnotationNamesByStereotype, getAnnotationNamesByStereotype, getAnnotationType, getAnnotationType, getAnnotationTypeByStereotype, getAnnotationTypeByStereotype, getAnnotationTypesByStereotype, getAnnotationTypesByStereotype, getAnnotationTypesByStereotype, getAnnotationValuesByName, getAnnotationValuesByStereotype, getAnnotationValuesByType, getDeclaredAnnotation, getDeclaredAnnotation, getDeclaredAnnotationNameByStereotype, getDeclaredAnnotationNames, getDeclaredAnnotationNamesByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationTypeByStereotype, getDeclaredAnnotationValuesByName, getDeclaredAnnotationValuesByType, getDeclaredMetadata, getDeclaredStereotypeAnnotationNames, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValue, getDefaultValues, getStereotypeAnnotationNames, getTargetAnnotationMetadata, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValue, getValues, getValues, hasAnnotation, hasAnnotation, hasDeclaredAnnotation, hasDeclaredAnnotation, hasDeclaredStereotype, hasDeclaredStereotype, hasDeclaredStereotype, hasPropertyExpressions, hasSimpleAnnotation, hasSimpleDeclaredAnnotation, hasStereotype, hasStereotype, hasStereotype, hasStereotype, intValue, intValue, intValue, isAnnotationPresent, isDeclaredAnnotationPresent, isEmpty, isFalse, isFalse, isPresent, isPresent, isRepeatableAnnotation, isRepeatableAnnotation, isTrue, isTrue, longValue, longValue, stringValue, stringValue, stringValue, stringValue, stringValues, stringValues, stringValues, stringValues, synthesize, synthesize, synthesizeAll, synthesizeAnnotationsByType, synthesizeDeclared, synthesizeDeclared, synthesizeDeclared, synthesizeDeclaredAnnotationsByType

    Methods inherited from interface io.micronaut.inject.BeanContextConditional

    isEnabled

    Methods inherited from interface io.micronaut.inject.BeanDefinitionReference

    isProxiedBean, isProxyTarget

    Methods inherited from interface io.micronaut.core.beans.BeanInfo

    getOrder

    Methods inherited from interface io.micronaut.inject.BeanType

    getBeanName, getExposedTypes, isContainerType, isPrimary, requiresMethodProcessing

    Methods inherited from interface io.micronaut.inject.InstantiatableBeanDefinition

    instantiate, instantiate
  • Method Details

    • getAnnotationMetadata

      @NonNull default @NonNull io.micronaut.core.annotation.AnnotationMetadata getAnnotationMetadata()
      Specified by:
      getAnnotationMetadata in interface io.micronaut.core.annotation.AnnotationMetadataProvider
    • isEnabled

      default boolean isEnabled(@NonNull @NonNull BeanContext context, BeanResolutionContext resolutionContext)
      Description copied from interface: BeanContextConditional
      Return whether this component is enabled for the given context.
      Specified by:
      isEnabled in interface BeanContextConditional
      Parameters:
      context - The context
      resolutionContext - The bean resolution context
      Returns:
      True if it is
    • getTypeArguments

      default List<io.micronaut.core.type.Argument<?>> getTypeArguments(Class<?> type)
      Description copied from interface: BeanDefinition
      Return the type arguments for the given interface or super type for this bean.
      Specified by:
      getTypeArguments in interface BeanDefinition<T>
      Parameters:
      type - The super class or interface type
      Returns:
      The type arguments
    • isContextScope

      default boolean isContextScope()
      Specified by:
      isContextScope in interface BeanDefinitionReference<T>
      Returns:
      Is this class context scope
    • isConfigurationProperties

      default boolean isConfigurationProperties()
      Specified by:
      isConfigurationProperties in interface BeanDefinition<T>
      Specified by:
      isConfigurationProperties in interface BeanDefinitionReference<T>
      Returns:
      Is this bean a configuration properties.
    • load

      default BeanDefinition<T> load()
      Description copied from interface: BeanDefinitionReference
      Loads the bean definition.
      Specified by:
      load in interface BeanDefinitionReference<T>
      Returns:
      The loaded component definition or null if it shouldn't be loaded
    • getBeanDefinitionName

      default String getBeanDefinitionName()
      Specified by:
      getBeanDefinitionName in interface BeanDefinitionReference<T>
      Returns:
      The class name of the backing BeanDefinition
    • load

      default BeanDefinition<T> load(BeanContext context)
      Description copied from interface: BeanDefinitionReference
      Loads the bean definition for the current BeanContext.
      Specified by:
      load in interface BeanDefinitionReference<T>
      Parameters:
      context - The bean context
      Returns:
      The loaded bean definition or null if it shouldn't be loaded
    • isPresent

      default boolean isPresent()
      Specified by:
      isPresent in interface BeanDefinitionReference<T>
      Returns:
      Is the underlying bean type present on the classpath
    • isSingleton

      default boolean isSingleton()
      Specified by:
      isSingleton in interface BeanDefinition<T>
      Specified by:
      isSingleton in interface BeanDefinitionReference<T>
      Returns:
      Is this bean a singleton.
    • of

      @NonNull static <B> @NonNull RuntimeBeanDefinition<B> of(@NonNull B bean)
      Creates a new effectively singleton bean definition that references the given bean.
      Type Parameters:
      B - The bean type
      Parameters:
      bean - The bean
      Returns:
      The BeanDefinitionReference
      Since:
      3.6.0
    • of

      @NonNull static <B> @NonNull RuntimeBeanDefinition<B> of(@NonNull @NonNull Class<B> beanType, @NonNull @NonNull Supplier<B> beanSupplier)
      Creates a new bean definition that will resolve the bean from the given supplier.

      The bean is by default not singleton and the supplier will be invoked for each injection point.

      Type Parameters:
      B - The bean type
      Parameters:
      beanType - The bean type
      beanSupplier - The bean supplier
      Returns:
      The BeanDefinitionReference
      Since:
      3.6.0
    • builder

      @NonNull static <B> @NonNull RuntimeBeanDefinition.Builder<B> builder(@NonNull B bean)
      A new builder for constructing and configuring runtime created beans.
      Type Parameters:
      B - The bean type
      Parameters:
      bean - The bean to use
      Returns:
      The builder
    • builder

      @NonNull static <B> @NonNull RuntimeBeanDefinition.Builder<B> builder(@NonNull @NonNull Class<B> beanType, @NonNull @NonNull Supplier<B> beanSupplier)
      A new builder for constructing and configuring runtime created beans.
      Type Parameters:
      B - The bean type
      Parameters:
      beanType - The bean type
      beanSupplier - The bean supplier
      Returns:
      The builder
    • builder

      @NonNull static <B> @NonNull RuntimeBeanDefinition.Builder<B> builder(@NonNull @NonNull io.micronaut.core.type.Argument<B> beanType, @NonNull @NonNull Supplier<B> beanSupplier)
      A new builder for constructing and configuring runtime created beans.
      Type Parameters:
      B - The bean type
      Parameters:
      beanType - The bean type
      beanSupplier - The bean supplier
      Returns:
      The builder