我有一个简单的Java类叫做Metric,它有两个字段:MetricType和value:
public class Metric {
MetricType type;
int value;
}
enum MetricType {
SPACE, CPU, UNKNOWN
}
当从MongoDB读取指标时,我希望有一个自定义转换器来处理MetricType。该转换器将把任何未映射到枚举的内容转换为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中已经注册了,但是转换器没有被调用...我错过了什么吗?
谢谢!