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

时间:2018-03-20 07:55:17

标签: mongodb mongotemplate

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

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

我不想编写特定于每种类型的集合及其中每个字段的逻辑。另外,将这样的逻辑放在DB存储库级别是一个好习惯吗?

1 个答案:

答案 0 :(得分:0)

尝试使用AbstractMongoEventListener。例如,create创建自己的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();
                }
            }
        }

    }
}

此实现将在将对象转换为MongoDB对象之前修剪对象中的所有字符串。听众应该适用于您的所有馆藏。不要忘记在Spring上下文中注册这个监听器。

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