Creating Repository Instances
Repository interfaces are registered by Java configuration or the Meilisearch XML namespace. Repository bootstrap requires a configured MeilisearchOperations bean; see Repository Configuration for the complete client and template setup.
Java Configuration
Enable repository scanning with @EnableMeilisearchRepositories:
import io.vanslog.spring.data.meilisearch.repository.config.EnableMeilisearchRepositories;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableMeilisearchRepositories(basePackages = "com.example.movies")
class RepositoryConfiguration {
}
If no base package is specified, Spring scans the package of the annotated configuration class. The annotation uses a bean named meilisearchTemplate by default; set meilisearchTemplateRef to select a differently named MeilisearchOperations bean.
Repository scanning does not configure the Meilisearch client or create the operations bean. This module does not provide Spring Boot auto-configuration. See Repository Configuration for an example that wires the required beans.
XML Configuration
Use the Meilisearch namespace’s repositories element to scan a base package:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:meilisearch="http://www.vanslog.io/spring/data/meilisearch"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.vanslog.io/spring/data/meilisearch
http://www.vanslog.io/spring/data/meilisearch/spring-meilisearch-1.0.xsd">
<meilisearch:repositories
base-package="com.example.movies"
meilisearch-template-ref="meilisearchTemplate" />
</beans>
The namespace element extends Spring Data’s repository attributes and adds meilisearch-template-ref. The template bean must be declared separately. See XML Namespace for the complete configuration.
Restricting Repository Scanning
Use includeFilters and excludeFilters to control which candidate interfaces are considered during annotation-based scanning:
import io.vanslog.spring.data.meilisearch.repository.config.EnableMeilisearchRepositories;
import org.springframework.context.annotation.ComponentScan.Filter;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.FilterType;
@Configuration
@EnableMeilisearchRepositories(
basePackages = "com.example.movies",
includeFilters = @Filter(type = FilterType.REGEX, pattern = ".*Repository"),
excludeFilters = @Filter(type = FilterType.REGEX, pattern = ".*LegacyRepository"))
class RepositoryConfiguration {
}
@EnableMeilisearchRepositories also supports type-safe package selection, nested repository selection, and repository factory configuration. See Repository Configuration for the available attributes.
Programmatic Repository Factory
For programmatic setup without repository scanning, use the public Meilisearch repository factory with an already configured MeilisearchOperations instance:
import io.vanslog.spring.data.meilisearch.repository.support.MeilisearchRepositoryFactory;
MeilisearchRepositoryFactory factory = new MeilisearchRepositoryFactory(meilisearchOperations);
MovieRepository repository = factory.getRepository(MovieRepository.class);
This is a repository factory API, not a CDI integration. The repository interface must use supported base methods; custom repository query methods remain unsupported.