Spring Data Mongo: отображение объектов с использованием аннотаций Джексона
Я использую Spring-data Mongo (1.3.3) в качестве механизма доступа к Mongo. Мои доменные объекты написаны на Groovy, и я использую аннотации Джексона для определения свойств и имен:
@JsonProperty('is_author')
boolean author = false
@JsonProperty('author_info')
AuthorInfo authorInfo
Когда я сохраняю один из моих доменных объектов в Mongo, аннотация JsonProperty игнорируется, и поле сохраняется с использованием имени поля стандартного объекта. Покопавшись в документации Spring Data Mongo, я обнаружил, что библиотека ожидает @Field
аннотация для изменения фактического имени поля в Mongo.
Есть ли способ использовать только аннотации Джексона вместо двух аннотаций для достижения одинаковых результатов. Может быть, "настроенная" версия MappingMongoConverter?
1 ответ
Так как мое приложение находится в Groovy, я использовал новый @AnnotationCollector
Преобразование AST ( http://blog.andresteingress.com/2013/01/25/groovy-2-1-the-annotationcollector-annotation/) "объединяет" аннотации Джексона и Spring Data Mongo. Вот как это выглядит: просто и эффективно!
package com.someapp
import com.fasterxml.jackson.annotation.JsonProperty
import groovy.transform.AnnotationCollector
import org.springframework.data.mongodb.core.mapping.Field
@AnnotationCollector([Field, JsonProperty])
public @interface JsonMongoProperty {}
А вот как это используется:
@JsonMongoProperty('is_author')
boolean author = false
@JsonMongoProperty('author_info')
AuthorInfo authorInfo