我正在尝试实现一个有点通用的转换器,它根据给定的注释转换数据。假设我想以任何方式转换这些带注释的字符串。
一切都很好,直到代码到达我的转换器的“匹配”方法。我得到的“sourceType”总是被剥夺了所有有用的信息。有没有人通过这样的设置取得任何成功,或者我错过了什么?
public class TestStringWriteConverter implements ConditionalGenericConverter {
@Override
public boolean matches(TypeDescriptor sourceType, TypeDescriptor targetType) {
if (sourceType.hasAnnotation(GivenAnnotation.class)) {
//->never gets executed, because sourceType is being stripped out of it's useful infos
}
我从这个包 org.springframework.data.mongodb.core.convert 跟踪问题到 MappingMongoConverter
protected void writeInternal(Object obj, final DBObject dbo, MongoPersistentEntity<?> entity) {
//...
if (null != propertyObj) {
if (!conversions.isSimpleType(propertyObj.getClass())) {
writePropertyInternal(propertyObj, dbo, prop);
} else {
// I always end up here, which is correct but the whole prop object is being omitted in favor of the getFieldName() property
writeSimpleInternal(propertyObj, dbo, prop.getFieldName());
}
}
}
我正在使用的春季版本:
<spring.version>3.2.5.RELEASE</spring.version> <spring.data.version>1.3.2.RELEASE</spring.data.version>
任何帮助深表感谢。