Interface BeanIntrospection<T>
- Type Parameters:
T
- The bean type
- All Superinterfaces:
AnnotationMetadata
,AnnotationMetadataDelegate
,AnnotationMetadataProvider
,AnnotationSource
,ArgumentCoercible<T>
,BeanInfo<T>
- All Known Subinterfaces:
UnsafeBeanInstantiationIntrospection<T>
- All Known Implementing Classes:
AbstractInitializableBeanIntrospection
BeanIntrospection
is the result of compile time computation of a beans properties and annotation metadata.
This interface allows you to instantiate and read and write to bean properties without using reflection or caching reflective metadata, which is expensive from a memory consumption perspective.
BeanIntrospection
instances can be obtained either via getIntrospection(Class)
or via the BeanIntrospector
.
A BeanIntrospection
is only computed at compilation time if the class is annotated with Introspected
.
- Since:
- 1.1
- Author:
- graemerocher
- See Also:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic interface
A builder style API for creating instances that abstracts whether the instance is a record, bean or created by another builder. -
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 TypeMethodDescriptionbuilder()
default @NonNull Collection<BeanMethod<T,
Object>> Returns theBeanMethod
instances for this introspection.The bean type.default @NonNull BeanConstructor<T>
The constructor arguments needed to instantiate the bean.getIndexedProperties
(@NonNull Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given annotation type.default @NonNull Optional<BeanProperty<T,
Object>> getIndexedProperty
(@NonNull Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given type.getIndexedProperty
(@NonNull Class<? extends Annotation> annotationType, @NonNull String annotationValue) Get all the bean properties annotated for the given type.static <T2> BeanIntrospection<T2>
getIntrospection
(Class<T2> type) Obtains an introspection from the defaultBeanIntrospector
.default @NonNull Optional<BeanProperty<T,
Object>> getProperty
(@NonNull String name) Obtain a property by name.default <P> @NonNull Optional<BeanProperty<T,
P>> getProperty
(@NonNull String name, @NonNull Class<P> type) Obtain a property by name and type.The property names as an array.default <P> @NonNull BeanProperty<T,
P> getRequiredProperty
(@NonNull String name, @NonNull Class<P> type) Gets a property of the given name and type or throwsIntrospectionException
if the property is not present.default boolean
Does the introspection have a backing builder.Instantiates an instance of the bean, throwing an exception is instantiation is not possible.instantiate
(boolean strictNullable, Object... arguments) Instantiates an instance of the bean, throwing an exception is instantiation is not possible.default T
instantiate
(Object... arguments) Instantiates an instance of the bean, throwing an exception is instantiation is not possible.default boolean
Can the introspection be constructed withbuilder()
.default int
propertyIndexOf
(@NonNull String name) Obtain the property index position.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.core.annotation.AnnotationMetadataProvider
getAnnotationMetadata
Methods inherited from interface io.micronaut.core.beans.BeanInfo
asArgument, getGenericBeanType
-
Method Details
-
getBeanProperties
- Returns:
- An immutable collection of properties.
-
getIndexedProperties
@NonNull @NonNull Collection<BeanProperty<T,Object>> getIndexedProperties(@NonNull @NonNull Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given annotation type. If the annotation isIntrospected.indexed()
by the given annotation, then it will be included in the resulting list.- Parameters:
annotationType
- The annotation type- Returns:
- An immutable collection of properties.
- See Also:
-
builder
- Returns:
- Obtain a builder for this introspection.
- Since:
- 4.1.0
-
isBuildable
default boolean isBuildable()Can the introspection be constructed withbuilder()
.- Returns:
- True if it can
- Since:
- 4.1.0
-
hasBuilder
default boolean hasBuilder()Does the introspection have a backing builder.This method exists so that consumers can choose to optimize towards direct instantiation using
instantiate()
if no builder is present.- Returns:
- True if a backing builder is present.
- Since:
- 4.1.0
-
instantiate
Instantiates an instance of the bean, throwing an exception is instantiation is not possible.- Returns:
- An instance
- Throws:
InstantiationException
- If the bean cannot be instantiated or the arguments are not satisfied.
-
instantiate
Instantiates an instance of the bean, throwing an exception is instantiation is not possible.- Parameters:
arguments
- The arguments required to instantiate bean. Should match the types returned bygetConstructorArguments()
- Returns:
- An instance
- Throws:
InstantiationException
- If the bean cannot be instantiated.
-
instantiate
Instantiates an instance of the bean, throwing an exception is instantiation is not possible.- Parameters:
strictNullable
- If true, require null parameters to be annotated with a nullable annotationarguments
- The arguments required to instantiate bean. Should match the types returned bygetConstructorArguments()
- Returns:
- An instance
- Throws:
InstantiationException
- If the bean cannot be instantiated.
-
getBeanType
The bean type.- Specified by:
getBeanType
in interfaceBeanInfo<T>
- Returns:
- The bean type
-
getIndexedProperty
@NonNull @NonNull Optional<BeanProperty<T,Object>> getIndexedProperty(@NonNull @NonNull Class<? extends Annotation> annotationType, @NonNull @NonNull String annotationValue) Get all the bean properties annotated for the given type.- Parameters:
annotationType
- The annotation typeannotationValue
- The annotation value- Returns:
- An immutable collection of properties.
- See Also:
-
getBeanMethods
Returns theBeanMethod
instances for this introspection.The
BeanMethod
instances are only those methods annotated withio.micronaut.context.annotation.Executable
and hence represent a subset of the actual methods of the class and do not include any methods that are exposed asBeanProperty
instances.- Returns:
- An immutable collection of methods.
- Since:
- 2.3.0
-
getIndexedProperty
@NonNull default @NonNull Optional<BeanProperty<T,Object>> getIndexedProperty(@NonNull @NonNull Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given type.- Parameters:
annotationType
- The annotation type- Returns:
- An immutable collection of properties.
- See Also:
-
getConstructorArguments
The constructor arguments needed to instantiate the bean.- Returns:
- An argument array
-
getProperty
@NonNull default @NonNull Optional<BeanProperty<T,Object>> getProperty(@NonNull @NonNull String name) Obtain a property by name.- Parameters:
name
- The name of the property- Returns:
- A bean property if found
-
propertyIndexOf
Obtain the property index position.- Parameters:
name
- The name of the property- Returns:
- A property index or -1 of not found.
- Since:
- 3.1
-
getRequiredProperty
@NonNull default <P> @NonNull BeanProperty<T,P> getRequiredProperty(@NonNull @NonNull String name, @NonNull @NonNull Class<P> type) Gets a property of the given name and type or throwsIntrospectionException
if the property is not present.- Type Parameters:
P
- The property generic type- Parameters:
name
- The nametype
- The type- Returns:
- The property
-
getProperty
@NonNull default <P> @NonNull Optional<BeanProperty<T,P>> getProperty(@NonNull @NonNull String name, @NonNull @NonNull Class<P> type) Obtain a property by name and type.- Type Parameters:
P
- The property type- Parameters:
name
- The name of the propertytype
- The property type to search for- Returns:
- A bean property if found
-
getPropertyNames
The property names as an array.- Returns:
- The properties names
-
getConstructor
- Returns:
- The bean constructor.
- Since:
- 3.0.0
-
getIntrospection
Obtains an introspection from the defaultBeanIntrospector
.- Type Parameters:
T2
- The generic type- Parameters:
type
- The type- Returns:
- The introspection
- Throws:
IntrospectionException
- If the introspection cannot be found or errors when loading
-