如何在使用MongoTemplate插入MongoDB之前修剪字符串?

如何在使用MongoTemplate插入MongoDB之前修剪字符串?,mongodb,mongotemplate,Mongodb,Mongotemplate,基本上,我从另一个源获取数据并创建数据库集合。但有些数据的结尾有空格,这会在以后使用时导致前端出现问题 在使用spring mongoTemplate配置/代码插入和更新到MongoDB之前,是否有一种通用的方法来修剪所有集合的所有String字段 我不想为每种类型的集合和其中的每个字段编写特定的逻辑。另外,将这种逻辑放在数据库存储库级别是否是一种好的做法?尝试使用。例如,创建自己的AbstractMongoEventListener实现: @Component class SaveMongoE

基本上,我从另一个源获取数据并创建数据库集合。但有些数据的结尾有空格,这会在以后使用时导致前端出现问题

在使用spring mongoTemplate配置/代码插入和更新到
MongoDB
之前,是否有一种通用的方法来修剪所有集合的所有
String
字段

我不想为每种类型的集合和其中的每个字段编写特定的逻辑。另外,将这种逻辑放在数据库存储库级别是否是一种好的做法?

尝试使用。例如,创建自己的
AbstractMongoEventListener
实现:

@Component
class SaveMongoEventListener extends AbstractMongoEventListener<Object> {

    @Override
    public void onBeforeConvert(BeforeConvertEvent<Object> event) {
        Object source = event.getSource();

        for (Field field : source.getClass().getFields()) {
            if (field.getType().isAssignableFrom(String.class)) {
                try {
                    String value = (String) field.get(source);
                    field.setAccessible(true);
                    field.set(value != null ? value.trim(): value, source);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }

    }
}
@组件
类SaveMongoEventListener扩展了AbstractMongoEventListener{
@凌驾
公共无效onBeforeConvert(BeforeConvertEvent事件){
Object source=event.getSource();
对于(字段:source.getClass().getFields()){
if(field.getType().isAssignableFrom(String.class)){
试一试{
字符串值=(字符串)字段.get(源);
字段。setAccessible(true);
field.set(value!=null?value.trim():value,source);
}捕获(非法访问例外e){
e、 printStackTrace();
}
}
}
}
}
在将对象转换为MongoDB对象之前,此实现将修剪对象中的所有字符串。侦听器应该适用于您的所有集合。不要忘记在Spring上下文中注册此侦听器

要在从MongoDB加载后修剪字符串,您应该在事件中执行相同的操作