diff --git a/spring-data-mongodb/src/main/java/org/baeldung/config/MongoConfig.java b/spring-data-mongodb/src/main/java/org/baeldung/config/MongoConfig.java index 8fbe966074..d699720de8 100644 --- a/spring-data-mongodb/src/main/java/org/baeldung/config/MongoConfig.java +++ b/spring-data-mongodb/src/main/java/org/baeldung/config/MongoConfig.java @@ -5,6 +5,7 @@ import java.util.List; import org.baeldung.converter.UserWriterConverter; import org.baeldung.event.CascadeSaveMongoEventListener; +import org.baeldung.event.UserCascadeSaveMongoEventListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; @@ -36,6 +37,11 @@ public class MongoConfig extends AbstractMongoConfiguration { return "org.baeldung"; } + @Bean + public UserCascadeSaveMongoEventListener userCascadingMongoEventListener() { + return new UserCascadeSaveMongoEventListener(); + } + @Bean public CascadeSaveMongoEventListener cascadingMongoEventListener() { return new CascadeSaveMongoEventListener(); diff --git a/spring-data-mongodb/src/main/java/org/baeldung/event/UserCascadeSaveMongoEventListener.java b/spring-data-mongodb/src/main/java/org/baeldung/event/UserCascadeSaveMongoEventListener.java new file mode 100644 index 0000000000..423df59b95 --- /dev/null +++ b/spring-data-mongodb/src/main/java/org/baeldung/event/UserCascadeSaveMongoEventListener.java @@ -0,0 +1,18 @@ +package org.baeldung.event; + +import org.baeldung.model.User; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.mongodb.core.MongoOperations; +import org.springframework.data.mongodb.core.mapping.event.AbstractMongoEventListener; + +public class UserCascadeSaveMongoEventListener extends AbstractMongoEventListener { + @Autowired + private MongoOperations mongoOperations; + + @Override + public void onBeforeConvert(final Object source) { + if (source instanceof User && ((User) source).getEmailAddress() != null) { + mongoOperations.save(((User) source).getEmailAddress()); + } + } +}