У меня есть простой Java-класс под названием Metric, который имеет два поля: MetricType и значение:
public class Metric {
MetricType type;
int value;
}
enum MetricType {
SPACE, CPU, UNKNOWN
}
При чтении метрики из mongo я хочу специальный преобразователь для MetricType, который будет преобразовывать все, что не являетсясопоставлено с enum to UNKNOWN.
Мой репозиторий является простым репозиторием:
public interface MetricRepository extends MongoRepository<Metric,
String> {}
Я использую версию spring-boot-starter-data-mongodb 1.5.9
я попытался создать конвертер из строки в MetricType
@ReadingConverter
public class StringToMetricTypeConverter implements Converter<String, MetricType> {
@Override
public MetricType convert(String dbData) {
try {
return MetricType.valueOf(dbData);
}
catch (IllegalArgumentException e) {
return MetricType.UNKNOWN;
}
}
}
и добавить в файл mongoConfig:
@Bean
public MongoTemplate mongoTemplate() throws Exception {
MongoTemplate mongoTemplate = new MongoTemplate(mongo(), getDatabaseName());
MappingMongoConverter mongoMapping = (MappingMongoConverter) mongoTemplate.getConverter();
mongoMapping.setCustomConversions(customConversions());
mongoMapping.afterPropertiesSet();
return mongoTemplate;
}
@Bean
public CustomConversions customConversions() {
return new CustomConversions(Arrays.asList(new StringToMetricTypeConverter()));
}
Я вижу, что конвертер зарегистрирован в mongoTemplate, но конвертерне вызывается ... что мне здесь не хватает?
спасибо!