Skip to content

Custom ObjectMapper

akonczak edited this page Nov 10, 2013 · 3 revisions

How to use custom ObjectMapper?

  1. Create new Class and implement Interface EntityMapper
public class CustomEntityMapper implements EntityMapper {

    public CustomEntityMapper(){
        //custom configuration/implementation (e.g. FasterXML/jackson)
    }

    @Override
    public String mapToString(Object object) throws IOException {
        //mapping Object to String
        return null;
    }

    @Override
    public <T> T mapToObject(String source, Class<T> clazz) throws IOException {
        //mapping String to Object
        return null;
    }
}
  1. Define new bean and inject it into ElasticsearchTemplate
    <bean name="elasticsearchTemplate"
          class="org.springframework.data.elasticsearch.core.ElasticsearchTemplate">
        <constructor-arg name="client" ref="client"/>
        <constructor-arg name="entityMapper" ref="entityMapper"/>
    </bean>

    <bean name="entityMapper" class="org.springframework.data.elasticsearch.core.CustomEntityMapper"/>
  1. Done

Default implementation for EntityMapper used in project can be found here https://github.com/spring-projects/spring-data-elasticsearch/blob/master/src/main/java/org/springframework/data/elasticsearch/core/DefaultEntityMapper.java