Package io.micronaut.context
Interface RuntimeBeanDefinition<T>
- Type Parameters:
T
- The bean type
- All Superinterfaces:
AnnotationMetadata
,AnnotationMetadataDelegate
,AnnotationMetadataProvider
,AnnotationSource
,ArgumentCoercible<T>
,BeanContextConditional
,BeanDefinition<T>
,BeanDefinitionReference<T>
,BeanInfo<T>
,BeanType<T>
,InstantiatableBeanDefinition<T>
,Named
,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
- Author:
- graemerocher
- See Also:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic interface
A builder for constructingRuntimeBeanDefinition
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
-
Method Summary
Modifier and TypeMethodDescriptionstatic <B> @NonNull RuntimeBeanDefinition.Builder<B>
A new builder for constructing and configuring runtime created beans.static <B> @NonNull RuntimeBeanDefinition.Builder<B>
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 AnnotationMetadata
Supplies the metadata.default String
getTypeArguments
(Class<?> type) 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>
load()
Loads the bean definition.default BeanDefinition<T>
load
(BeanContext context) Loads the bean definition for the currentBeanContext
.static <B> @NonNull RuntimeBeanDefinition<B>
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.BeanDefinition
asArgument, findMethod, findPossibleMethods, getBeanType, getConstructor, getContainerElement, getDeclaredQualifier, getDeclaringType, getExecutableMethods, getGenericBeanType, getInjectedFields, getInjectedMethods, getName, getPostConstructMethods, getPreDestroyMethods, getRequiredComponents, getRequiredMethod, getScope, getScopeName, getTypeArguments, getTypeArguments, getTypeParameters, getTypeParameters, isAbstract, isCandidateBean, isIterable, isProxy, resolveDynamicQualifier
Methods inherited from interface io.micronaut.inject.BeanDefinitionReference
isProxiedBean, isProxyTarget
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
Description copied from interface:AnnotationMetadataProvider
Supplies the metadata. Defaults toAnnotationMetadata.EMPTY_METADATA
.- Specified by:
getAnnotationMetadata
in interfaceAnnotationMetadataProvider
- Returns:
- The
AnnotationMetadata
-
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 interfaceBeanContextConditional
- Parameters:
context
- The contextresolutionContext
- The bean resolution context- Returns:
- True if it is
-
getTypeArguments
Description copied from interface:BeanDefinition
Return the type arguments for the given interface or super type for this bean.- Specified by:
getTypeArguments
in interfaceBeanDefinition<T>
- Parameters:
type
- The super class or interface type- Returns:
- The type arguments
-
isContextScope
default boolean isContextScope()- Specified by:
isContextScope
in interfaceBeanDefinitionReference<T>
- Returns:
- Is this class context scope
-
isConfigurationProperties
default boolean isConfigurationProperties()- Specified by:
isConfigurationProperties
in interfaceBeanDefinition<T>
- Specified by:
isConfigurationProperties
in interfaceBeanDefinitionReference<T>
- Returns:
- Is this bean a configuration properties.
-
load
Description copied from interface:BeanDefinitionReference
Loads the bean definition.- Specified by:
load
in interfaceBeanDefinitionReference<T>
- Returns:
- The loaded component definition or null if it shouldn't be loaded
-
getBeanDefinitionName
- Specified by:
getBeanDefinitionName
in interfaceBeanDefinitionReference<T>
- Returns:
- The class name of the backing
BeanDefinition
-
load
Description copied from interface:BeanDefinitionReference
Loads the bean definition for the currentBeanContext
.- Specified by:
load
in interfaceBeanDefinitionReference<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 interfaceBeanDefinitionReference<T>
- Returns:
- Is the underlying bean type present on the classpath
-
isSingleton
default boolean isSingleton()- Specified by:
isSingleton
in interfaceBeanDefinition<T>
- Specified by:
isSingleton
in interfaceBeanDefinitionReference<T>
- Returns:
- Is this bean a singleton.
-
of
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 typebeanSupplier
- The bean supplier- Returns:
- The
BeanDefinitionReference
- Since:
- 3.6.0
-
builder
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 typebeanSupplier
- The bean supplier- Returns:
- The builder
-
builder
@NonNull static <B> @NonNull RuntimeBeanDefinition.Builder<B> builder(@NonNull @NonNull 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 typebeanSupplier
- The bean supplier- Returns:
- The builder
-