package com.baeldung.config; import com.mongodb.Mongo; import com.mongodb.MongoClient; import com.baeldung.converter.UserWriterConverter; import com.baeldung.event.CascadeSaveMongoEventListener; import com.baeldung.event.UserCascadeSaveMongoEventListener; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.convert.converter.Converter; import org.springframework.data.mongodb.config.AbstractMongoConfiguration; import org.springframework.data.mongodb.core.convert.CustomConversions; import org.springframework.data.mongodb.gridfs.GridFsTemplate; import org.springframework.data.mongodb.repository.config.EnableMongoRepositories; import java.util.ArrayList; import java.util.List; @Configuration @EnableMongoRepositories(basePackages = "com.baeldung.repository") public class MongoConfig extends AbstractMongoConfiguration { private final List> converters = new ArrayList>(); @Override protected String getDatabaseName() { return "test"; } @Override public Mongo mongo() throws Exception { return new MongoClient("127.0.0.1", 27017); } @Override public String getMappingBasePackage() { return "com.baeldung"; } @Bean public UserCascadeSaveMongoEventListener userCascadingMongoEventListener() { return new UserCascadeSaveMongoEventListener(); } @Bean public CascadeSaveMongoEventListener cascadingMongoEventListener() { return new CascadeSaveMongoEventListener(); } @Override public CustomConversions customConversions() { converters.add(new UserWriterConverter()); return new CustomConversions(converters); } @Bean public GridFsTemplate gridFsTemplate() throws Exception { return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter()); } }