This version is still in development and is not considered stable yet. For the latest stable version, please use Spring Data Meilisearch 0.13.0!

Repository Configuration

Spring Data Meilisearch repositories are enabled through @EnableMeilisearchRepositories or the XML namespace.

Repository bootstrap registers interfaces against a MeilisearchOperations bean. It does not create the client, template, or converter for you, and this module does not provide Spring Boot auto-configuration. The default operations bean name is meilisearchTemplate; use meilisearchTemplateRef to select another bean. Repository creation can apply settings declared on the mapped entity; see Automatic Settings Application.

JavaConfig

import io.vanslog.spring.data.meilisearch.repository.config.EnableMeilisearchRepositories;

import org.springframework.context.annotation.Configuration;

@Configuration
@EnableMeilisearchRepositories(
        basePackages = "com.example.products",
        meilisearchTemplateRef = "meilisearchTemplate",
        namedQueriesLocation = "classpath:meilisearch-named-queries.properties")
class RepositoryConfig {
}

@EnableMeilisearchRepositories supports the standard Spring Data repository bootstrap options for scanning and repository factory selection, including:

  • value and basePackages

  • basePackageClasses

  • includeFilters and excludeFilters

  • repositoryImplementationPostfix

  • repositoryFactoryBeanClass

  • meilisearchTemplateRef

  • considerNestedRepositories

If no base packages are configured, Spring Data scans the package of the annotated configuration class.

queryLookupStrategy defaults to CREATE_IF_NOT_FOUND: it prefers annotated @Query searches, then named searches, then derives supported predicates from the method name. USE_DECLARED_QUERY requires an annotated or named search; CREATE uses method-name derivation only. namedQueriesLocation loads filter templates and optional .q search-text templates from a properties resource. The location is optional when all queries are annotated or derived. See Query Methods for the resolution table, syntax, parameter binding, and lookup precedence.

XML Namespace

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:meilisearch="http://www.vanslog.io/spring/data/meilisearch"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd
       http://www.vanslog.io/spring/data/meilisearch
       http://www.vanslog.io/spring/data/meilisearch/spring-meilisearch-1.0.xsd">

    <context:property-placeholder/>
    <bean id="jsonHandler" class="com.meilisearch.sdk.json.GsonJsonHandler"/>
    <meilisearch:meilisearch-client
            id="meilisearchClient"
            api-key="${MEILISEARCH_API_KEY}"
            request-timeout="5000"
            request-interval="50"/>

    <bean id="meilisearchTemplate"
          class="io.vanslog.spring.data.meilisearch.client.msc.MeilisearchTemplate">
        <constructor-arg ref="meilisearchClient"/>
    </bean>

    <meilisearch:repositories
            base-package="com.example.movies"
            meilisearch-template-ref="meilisearchTemplate"/>
</beans>

The XML namespace extends the Spring Data repository namespace and adds the meilisearch-template-ref attribute. See XML namespace reference for the full attribute list. The one-argument MeilisearchTemplate constructor provides a default mapping converter and ObjectMapper. Wire them explicitly only when you need to customize conversion; see Object Mapping.