@NonNullApi

# Package org.springframework.data.repository.core.support

Base classes to implement repositories for various data stores.

See: Description

Interface Summary
MethodLookup: Strategy interface providing `predicates` to resolve a method called on a composite to its implementation method.
MethodLookup.MethodPredicate: A method predicate to be applied on the `MethodLookup.InvokedMethod` and `method candidate`.
QueryCreationListener<T extends RepositoryQuery>: Callback for listeners that want to execute functionality on `RepositoryQuery` creation.
RepositoryFactoryCustomizer: Callback interface that can be used to to customize a `repository factory`.
RepositoryFactoryInformation<T,ID>: Interface for components that can provide meta-information about a repository factory, the backing `EntityInformation` and `RepositoryInformation` as well as the `QueryMethod`s exposed by the repository.
RepositoryFragment<T>: Value object representing a repository fragment.
RepositoryMethodInvocationListener: Interface to be implemented by listeners that want to be notified upon repository method invocation.
RepositoryMethodInvocationListener.RepositoryMethodInvocationResult
RepositoryProxyPostProcessor: Callback interface used during repository proxy creation.

Class Summary
AbstractEntityInformation<T,ID>: Base class for implementations of `EntityInformation`.
AbstractRepositoryMetadata: Base class for `RepositoryMetadata` implementations.
AnnotationRepositoryMetadata: `RepositoryMetadata` implementation inspecting the given repository interface for a `RepositoryDefinition` annotation.
DefaultCrudMethods: Default implementation to discover CRUD methods based on the given `RepositoryMetadata`.
DefaultRepositoryMetadata: Default implementation of `RepositoryMetadata`.
DelegatingEntityInformation<T,ID>: Useful base class to implement custom `EntityInformation`s and delegate execution of standard methods from `EntityInformation` to a special implementation.
EventPublishingRepositoryProxyPostProcessor: `RepositoryProxyPostProcessor` to register a `MethodInterceptor` to intercept `CrudRepository.save(Object)` and `CrudRepository.delete(Object)` methods and publish events potentially exposed via a method annotated with `DomainEvents`.
MethodInvocationValidator: Interceptor enforcing required return value and method parameter constraints declared on repository query methods.
MethodLookup.InvokedMethod: Value object representing an invoked `Method`.
PersistenceExceptionTranslationRepositoryProxyPostProcessor: `RepositoryProxyPostProcessor` to register a `PersistenceExceptionTranslationInterceptor` on the repository proxy.
PersistentEntityInformation<T,ID>: `EntityInformation` implementation that uses a `PersistentEntity` to obtain id type information and uses a `IdentifierAccessor` to access the property value if requested.
PropertiesBasedNamedQueries: `NamedQueries` implementation backed by a `Properties` instance.
ReactiveRepositoryFactorySupport: Base class for repository factories to use reactive support.
RepositoryComposition: Composite implementation to back repository method implementations.
RepositoryComposition.RepositoryFragments: Value object representing an ordered list of `fragments`.
RepositoryFactoryBeanSupport<T extends Repository<S,ID>,S,ID>: Adapter for Springs `FactoryBean` interface to allow easy setup of repository factories via Spring configuration.
RepositoryFactorySupport: Factory bean to create instances of a given repository interface.
RepositoryFragment.ImplementedRepositoryFragment<T>
RepositoryFragment.StructuralRepositoryFragment<T>
RepositoryFragmentsFactoryBean<T>: Factory bean for creation of `RepositoryComposition.RepositoryFragments`.
RepositoryMethodInvocationListener.RepositoryMethodInvocation: Value object capturing the actual invocation.
TransactionalRepositoryFactoryBeanSupport<T extends Repository<S,ID>,S,ID>: Extension of `RepositoryFactoryBeanSupport` to add transactional capabilities to the repository proxy.

Enum Summary
RepositoryMethodInvocationListener.RepositoryMethodInvocationResult.State
SurroundingTransactionDetectorMethodInterceptor: `MethodInterceptor` detecting whether a transaction is already running and exposing that fact via `SurroundingTransactionDetectorMethodInterceptor.isSurroundingTransactionActive()`.

## Package org.springframework.data.repository.core.support Description

Base classes to implement repositories for various data stores.