@NonNullApi

# Package org.springframework.data.mapping.model

Core implementation of the mapping subsystem's model.

See: Description

Interface Summary
EntityInstantiator: SPI to abstract strategies to create instances for `PersistentEntity`s.
FieldNamingStrategy: SPI to determine how to name document fields in cases the field name is not manually defined.
MutablePersistentEntity<T,P extends PersistentProperty<P>>: Interface capturing mutator methods for `PersistentEntity`s.
ParameterValueProvider<P extends PersistentProperty<P>>: Callback interface to lookup values for a given `PreferredConstructor.Parameter`.
PersistentPropertyAccessorFactory: Factory to create `PersistentPropertyAccessor` for a given `PersistentEntity` and bean instance.
PreferredConstructorDiscoverer<T,P extends PersistentProperty<P>>: Helper class to find a `PreferredConstructor`.
PropertyValueProvider<P extends PersistentProperty<P>>: SPI for components to provide values for as `PersistentProperty`.
SpELExpressionEvaluator: SPI for components that can evaluate Spring EL expressions.

Class Summary
AbstractPersistentProperty<P extends PersistentProperty<P>>: Simple implementation of `PersistentProperty`.
AnnotationBasedPersistentProperty<P extends PersistentProperty<P>>: Special `PersistentProperty` that takes annotations at a property into account.
BasicPersistentEntity<T,P extends PersistentProperty<P>>: Simple value object to capture information of `PersistentEntity`s.
CamelCaseAbbreviatingFieldNamingStrategy: `FieldNamingStrategy` that abbreviates field names by using the very first letter of the camel case parts of the `PersistentProperty`'s name.
CamelCaseSplittingFieldNamingStrategy: Configurable `FieldNamingStrategy` that splits up camel-case property names and reconcatenates them using a configured delimiter.
ClassGeneratingPropertyAccessorFactory: A factory that can generate byte code to speed-up dynamic property access.
ConvertingPropertyAccessor<T>: `PersistentPropertyAccessor` that potentially converts the value handed to `ConvertingPropertyAccessor.setProperty(PersistentProperty, Object)` to the type of the `PersistentProperty` using a `ConversionService`.
DefaultSpELExpressionEvaluator: `ParameterValueProvider` implementation that evaluates the `PreferredConstructor.Parameter`s key against `SpelExpressionParser` and `EvaluationContext`.
EntityInstantiators: Simple value object allowing access to `EntityInstantiator` instances for a given type falling back to a default one.
IdPropertyIdentifierAccessor: Default implementation of `IdentifierAccessor`.
InstantiationAwarePropertyAccessor<T>: A `PersistentPropertyAccessor` that will use an entity's `PersistenceConstructor` to create a new instance of it to apply a new value for a given `PersistentProperty`.
InstantiationAwarePropertyAccessorFactory: Delegating `PersistentPropertyAccessorFactory` decorating the `PersistentPropertyAccessor`s created with an `InstantiationAwarePropertyAccessor` to allow the handling of purely immutable types.
InternalEntityInstantiatorFactory: Deprecated since 2.3 as it's only a bridge from the legacy types towards the new, package-protected implementation.
KotlinDefaultMask: Value object representing defaulting masks used for Kotlin methods applying parameter defaulting.
PersistentEntityParameterValueProvider<P extends PersistentProperty<P>>: `ParameterValueProvider` based on a `PersistentEntity` to use a `PropertyValueProvider` to lookup the value of the property referenced by the given `PreferredConstructor.Parameter`.
Property: Value object to abstract the concept of a property backed by a `Field` and / or a `PropertyDescriptor`.
SimpleTypeHolder: Simple container to hold a set of types to be considered simple types.
SnakeCaseFieldNamingStrategy: `FieldNamingStrategy` that translates typical camel case Java property names to lower case JSON element names, separated by underscores.
SpELContext: Simple factory to create `SpelExpressionParser` and `EvaluationContext` instances.
SpELExpressionParameterValueProvider<P extends PersistentProperty<P>>: `ParameterValueProvider` that can be used to front a `ParameterValueProvider` delegate to prefer a SpEL expression evaluation over directly resolving the parameter value with the delegate.

Enum Summary
BeanWrapperPropertyAccessorFactory: PersistentPropertyAccessorFactory that uses a `BeanWrapper`.
PreferredConstructorDiscoverer.Discoverers: Helper class to find a `PreferredConstructor`.
PropertyNameFieldNamingStrategy: `FieldNamingStrategy` simply using the `PersistentProperty`'s name.

Exception Summary
MappingInstantiationException: Exception being thrown in case an entity could not be instantiated in the process of a to-object-mapping.

## Package org.springframework.data.mapping.model Description

Core implementation of the mapping subsystem's model.