Spring 弹簧&x2B;自定义转换器+;数据

Spring 弹簧&x2B;自定义转换器+;数据,spring,mongodb,converter,Spring,Mongodb,Converter,我得到了错误,不知道在哪里调试 ConverterNotFoundException:未找到能够从@javax.validation.constraints.NotNull java.util.HashMap类型转换为java.lang.String类型的转换器 我已设置我的应用程序上下文: <mongo:mapping-converter id="mongoConverter" base-package="com.app"> <mongo:custom-convert

我得到了错误,不知道在哪里调试

ConverterNotFoundException:未找到能够从@javax.validation.constraints.NotNull java.util.HashMap类型转换为java.lang.String类型的转换器

我已设置我的应用程序上下文:

<mongo:mapping-converter id="mongoConverter" base-package="com.app">
    <mongo:custom-converters>
      <mongo:converter>
            <bean class="com.app.util.converter.HashMapToStringConverter" />
      </mongo:converter>
        <mongo:converter>
            <bean class="com.app.util.converter.StringToHashMapConverter" />
        </mongo:converter>
    </mongo:custom-converters>
</mongo:mapping-converter> 


<bean class="org.springframework.data.mongodb.core.MongoTemplate" id="mongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
    <constructor-arg name="mongoConverter" ref="mongoConverter"/>
</bean>

我的一个转换器是:

public class HashMapToStringConverter implements Converter<HashMap<String,Date>, String>{
    @Override
    public String convert(HashMap<String,Date> map) {       
        if(map==null){
            throw new ConversionFailedException(TypeDescriptor.valueOf(HashMap.class), 
                    TypeDescriptor.valueOf(String.class), map, null);           
        }       
        StringBuilder sb = new StringBuilder();
        boolean first = true;
        for(Map.Entry<String, ?> e: map.entrySet()){             
            if(!first){ 
                sb.append(",");
                first=!first;
            }            
             sb.append(e.getKey());
             sb.append("::");
             sb.append(e.getValue());           
        }       
        return sb.toString();
    }
}
公共类HashMapToStringConverter实现转换器{
@凌驾
公共字符串转换(哈希映射){
if(map==null){
抛出新的ConversionFailedException(TypeDescriptor.valueOf(HashMap.class)),
TypeDescriptor.valueOf(String.class),map,null);
}       
StringBuilder sb=新的StringBuilder();
布尔值优先=真;
对于(Map.Entry e:Map.entrySet()){
如果(!first){
某人加上(“,”);
第一个=!第一个;
}            
sb.append(如getKey());
某人附加(“::”);
sb.append(如getValue());
}       
使某人返回字符串();
}
}

我也有类似的问题,但情况完全不同。我为DefaultConversionService定制了一个decorator

我所做的是调用addConverter方法并添加自定义转换器

我有点像:

public class MyConverter<Class1, Class2> {...}
DefaultConversionService cs = new MyDecoratorConversionService(new DefaultConversionService());

cs.addConverter(new MyConverter());