88 lines
3.0 KiB
Java
88 lines
3.0 KiB
Java
package com.baeldung.config;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.core.convert.converter.Converter;
|
|
import org.springframework.data.mongodb.MongoDatabaseFactory;
|
|
import org.springframework.data.mongodb.MongoTransactionManager;
|
|
import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
|
|
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
|
|
import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
|
|
import org.springframework.data.mongodb.gridfs.GridFsTemplate;
|
|
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
|
|
|
|
import com.baeldung.converter.UserWriterConverter;
|
|
import com.baeldung.event.CascadeSaveMongoEventListener;
|
|
import com.baeldung.event.UserCascadeSaveMongoEventListener;
|
|
import com.mongodb.ConnectionString;
|
|
import com.mongodb.MongoClientSettings;
|
|
import com.mongodb.client.MongoClient;
|
|
import com.mongodb.client.MongoClients;
|
|
|
|
import converter.ZonedDateTimeReadConverter;
|
|
import converter.ZonedDateTimeWriteConverter;
|
|
|
|
@Configuration
|
|
@EnableMongoRepositories(basePackages = "com.baeldung.repository")
|
|
public class MongoConfig extends AbstractMongoClientConfiguration {
|
|
|
|
private final List<Converter<?, ?>> converters = new ArrayList<Converter<?, ?>>();
|
|
|
|
@Autowired
|
|
private MappingMongoConverter mongoConverter;
|
|
|
|
@Override
|
|
protected String getDatabaseName() {
|
|
return "test";
|
|
}
|
|
|
|
@Override
|
|
public MongoClient mongoClient() {
|
|
final ConnectionString connectionString = new ConnectionString("mongodb://localhost:27017/test");
|
|
final MongoClientSettings mongoClientSettings = MongoClientSettings.builder()
|
|
.applyConnectionString(connectionString)
|
|
.build();
|
|
return MongoClients.create(mongoClientSettings);
|
|
}
|
|
|
|
@Override
|
|
public Collection<String> getMappingBasePackages() {
|
|
return Collections.singleton("com.baeldung");
|
|
}
|
|
|
|
@Bean
|
|
public UserCascadeSaveMongoEventListener userCascadingMongoEventListener() {
|
|
return new UserCascadeSaveMongoEventListener();
|
|
}
|
|
|
|
@Bean
|
|
public CascadeSaveMongoEventListener cascadingMongoEventListener() {
|
|
return new CascadeSaveMongoEventListener();
|
|
}
|
|
|
|
@Override
|
|
public MongoCustomConversions customConversions() {
|
|
converters.add(new UserWriterConverter());
|
|
converters.add(new ZonedDateTimeReadConverter());
|
|
converters.add(new ZonedDateTimeWriteConverter());
|
|
return new MongoCustomConversions(converters);
|
|
}
|
|
|
|
@Bean
|
|
public GridFsTemplate gridFsTemplate() throws Exception {
|
|
return new GridFsTemplate(mongoDbFactory(), mongoConverter);
|
|
}
|
|
|
|
@Bean
|
|
MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
|
|
return new MongoTransactionManager(dbFactory);
|
|
}
|
|
|
|
}
|