Package io.micronaut.core.beans
Interface BeanIntrospection<T>
- Type Parameters:
T
- The bean type
- All Superinterfaces:
AnnotationMetadata
,AnnotationMetadataDelegate
,AnnotationMetadataProvider
,AnnotationSource
,ArgumentCoercible<T>
,BeanInfo<T>
- All Known Implementing Classes:
AbstractBeanIntrospection
,AbstractInitializableBeanIntrospection
A
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:
-
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 TypeMethodDescriptiondefault Collection<BeanMethod<T,
Object>> Returns theBeanMethod
instances for this introspection.The bean type.default BeanConstructor<T>
default Argument<?>[]
The constructor arguments needed to instantiate the bean.getIndexedProperties
(Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given annotation type.default Optional<BeanProperty<T,
Object>> getIndexedProperty
(Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given type.getIndexedProperty
(Class<? extends Annotation> annotationType, 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 Optional<BeanProperty<T,
Object>> getProperty
(String name) Obtain a property by name.default <P> Optional<BeanProperty<T,
P>> getProperty
(String name, Class<P> type) Obtain a property by name and type.default String[]
The property names as an array.default <P> BeanProperty<T,
P> getRequiredProperty
(String name, Class<P> type) Gets a property of the given name and type or throwsIntrospectionException
if the property is not present.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 int
propertyIndexOf
(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:
- A immutable collection of properties.
-
getIndexedProperties
@NonNull Collection<BeanProperty<T,Object>> getIndexedProperties(@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:
- A immutable collection of properties.
- See Also:
-
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 Optional<BeanProperty<T,Object>> getIndexedProperty(@NonNull Class<? extends Annotation> annotationType, @NonNull String annotationValue) Get all the bean properties annotated for the given type.- Parameters:
annotationType
- The annotation typeannotationValue
- The annotation value- Returns:
- A 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:
- A immutable collection of methods.
- Since:
- 2.3.0
-
getIndexedProperty
@NonNull default Optional<BeanProperty<T,Object>> getIndexedProperty(@NonNull Class<? extends Annotation> annotationType) Get all the bean properties annotated for the given type.- Parameters:
annotationType
- The annotation type- Returns:
- A immutable collection of properties.
- See Also:
-
getConstructorArguments
The constructor arguments needed to instantiate the bean.- Returns:
- An argument array
-
getProperty
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> 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.- Type Parameters:
P
- The property generic type- Parameters:
name
- The nametype
- The type- Returns:
- The property
-
getProperty
@NonNull default <P> Optional<BeanProperty<T,P>> getProperty(@NonNull String name, @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
-