Java源码示例:org.springframework.data.mongodb.core.convert.DefaultDbRefResolver

示例1
@Bean
public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory, SequenceOption sequenceOption) {
	DbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);

	MongoCustomConversions conversions = new MongoCustomConversions(resolverConverter());
	MongoMappingContext mappingContext = new BHBMongoMappingContext();
	mappingContext.setSimpleTypeHolder(conversions.getSimpleTypeHolder());
	mappingContext.afterPropertiesSet();
	MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mappingContext);
	// _class 剔除
	converter.setTypeMapper(new DefaultMongoTypeMapper(null));
	converter.setCustomConversions(conversions);
	converter.afterPropertiesSet();

	// 需要自增时
	// MongoTemplate template=new DTXDMongoTemplate(mongoDbFactory,converter,
	// sequenceOption);
	MongoTemplate template = new MongoTemplate(mongoDbFactory, converter);
	return template;
}
 
示例2
@Override
@Bean
public MappingMongoConverter mappingMongoConverter() throws Exception {
    DefaultDbRefResolver dbRefResolver = new DefaultDbRefResolver(this.dbFactory());
    MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, this.mongoMappingContext());
    List<Object> list = new ArrayList<>();
    list.add(new BigDecimalToDecimal128Converter());//自定义的类型转换器
    list.add(new Decimal128ToBigDecimalConverter());//自定义的类型转换器
    //list.add(new DateLocalConvert());
    converter.setCustomConversions(new CustomConversions(list));
    return converter;
}
 
示例3
@Override
@Bean
public MappingMongoConverter mappingMongoConverter() throws Exception {
    DefaultDbRefResolver dbRefResolver = new DefaultDbRefResolver(this.dbFactory());
    MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, this.mongoMappingContext());
    List<Object> list = new ArrayList<>();
    list.add(new BigDecimalToDecimal128Converter());//自定义的类型转换器
    list.add(new Decimal128ToBigDecimalConverter());//自定义的类型转换器
    //list.add(new DateLocalConvert());
    converter.setCustomConversions(new CustomConversions(list));
    return converter;
}
 
示例4
@Primary
@Bean(name = "naiveMongoTemplate")
public MongoTemplate naiveMongoTemplate() throws Exception {
    MappingMongoConverter converter =
            new MappingMongoConverter(new DefaultDbRefResolver(naiveFactory()), new MongoMappingContext());
    converter.setTypeMapper(new DefaultMongoTypeMapper(null));
    return new MongoTemplate(naiveFactory(), converter);
}
 
示例5
@Bean
@Qualifier("completeMongoTemplate")
public MongoTemplate completeMongoTemplate() throws Exception {
    MappingMongoConverter converter =
            new MappingMongoConverter(new DefaultDbRefResolver(completeFactory()), new MongoMappingContext());
    converter.setTypeMapper(new DefaultMongoTypeMapper(null));
    return new MongoTemplate(completeFactory(), converter);
}
 
示例6
@Bean(name = "mongoTemplate")
public MongoTemplate createMongoTemplate() throws UnknownHostException {
    MongoClient mongoClient = new MongoClient(host, port);
    //TODO Configure additional MongoDB mongoClient settings if needed
    MongoDbFactory factory = new SimpleMongoDbFactory(mongoClient, database, new UserCredentials(username, password));
    MappingMongoConverter converter = new MappingMongoConverter(new DefaultDbRefResolver(factory), new MongoMappingContext());
    converter.setTypeMapper(new DefaultMongoTypeMapper(null));

    return new MongoTemplate(factory, converter);
}
 
示例7
@Bean
public DbRefResolver dbRefResolver(MongoDbFactory mongoDbFactory) {
  return new DefaultDbRefResolver(mongoDbFactory);
}
 
示例8
@Bean
public DbRefResolver dbRefResolver( MongoDbFactory mongoDbFactory) {
  return new DefaultDbRefResolver(mongoDbFactory);
}
 
示例9
@Setup
public void setUp() throws Exception {

	client = MongoClients.create();

	this.mappingContext = new MongoMappingContext();
	this.mappingContext.setInitialEntitySet(Collections.singleton(Customer.class));
	this.mappingContext.afterPropertiesSet();

	DbRefResolver dbRefResolver = new DefaultDbRefResolver(new SimpleMongoClientDatabaseFactory(client, DB_NAME));

	this.converter = new MappingMongoConverter(dbRefResolver, mappingContext);
	this.converter.setCustomConversions(new MongoCustomConversions(Collections.emptyList()));
	this.converter.afterPropertiesSet();

	// just a flat document
	this.documentWith2Properties = new Document("firstname", "Dave").append("lastname", "Matthews");

	// document with a nested one
	Document address = new Document("zipCode", "ABCDE").append("city", "Some Place");
	this.documentWith2PropertiesAnd1Nested = new Document("firstname", "Dave").//
			append("lastname", "Matthews").//
			append("address", address);

	// object equivalent of documentWith2PropertiesAnd1Nested
	this.objectWith2PropertiesAnd1Nested = new Customer("Dave", "Matthews", new Address("zipCode", "City"));

	// a bit more challenging object with list & map conversion.
	objectWithFlatAndComplexPropertiesPlusListAndMap = new SlightlyMoreComplexObject();
	objectWithFlatAndComplexPropertiesPlusListAndMap.id = UUID.randomUUID().toString();
	objectWithFlatAndComplexPropertiesPlusListAndMap.addressList = Arrays.asList(new Address("zip-1", "city-1"),
			new Address("zip-2", "city-2"));
	objectWithFlatAndComplexPropertiesPlusListAndMap.customer = objectWith2PropertiesAnd1Nested;
	objectWithFlatAndComplexPropertiesPlusListAndMap.customerMap = new LinkedHashMap<>();
	objectWithFlatAndComplexPropertiesPlusListAndMap.customerMap.put("dave", objectWith2PropertiesAnd1Nested);
	objectWithFlatAndComplexPropertiesPlusListAndMap.customerMap.put("deborah",
			new Customer("Deborah Anne", "Dyer", new Address("?", "london")));
	objectWithFlatAndComplexPropertiesPlusListAndMap.customerMap.put("eddie",
			new Customer("Eddie", "Vedder", new Address("??", "Seattle")));
	objectWithFlatAndComplexPropertiesPlusListAndMap.intOne = Integer.MIN_VALUE;
	objectWithFlatAndComplexPropertiesPlusListAndMap.intTwo = Integer.MAX_VALUE;
	objectWithFlatAndComplexPropertiesPlusListAndMap.location = new Point(-33.865143, 151.209900);
	objectWithFlatAndComplexPropertiesPlusListAndMap.renamedField = "supercalifragilisticexpialidocious";
	objectWithFlatAndComplexPropertiesPlusListAndMap.stringOne = "¯\\_(ツ)_/¯";
	objectWithFlatAndComplexPropertiesPlusListAndMap.stringTwo = " (╯°□°)╯︵ ┻━┻";

	// JSON equivalent of objectWithFlatAndComplexPropertiesPlusListAndMap
	documentWithFlatAndComplexPropertiesPlusListAndMap = Document.parse(
			"{ \"_id\" : \"517f6aee-e9e0-44f0-88ed-f3694a019f27\", \"intOne\" : -2147483648, \"intTwo\" : 2147483647, \"stringOne\" : \"¯\\\\_(ツ)_/¯\", \"stringTwo\" : \" (╯°□°)╯︵ ┻━┻\", \"explicit-field-name\" : \"supercalifragilisticexpialidocious\", \"location\" : { \"x\" : -33.865143, \"y\" : 151.2099 }, \"objectWith2PropertiesAnd1Nested\" : { \"firstname\" : \"Dave\", \"lastname\" : \"Matthews\", \"address\" : { \"zipCode\" : \"zipCode\", \"city\" : \"City\" } }, \"addressList\" : [{ \"zipCode\" : \"zip-1\", \"city\" : \"city-1\" }, { \"zipCode\" : \"zip-2\", \"city\" : \"city-2\" }], \"customerMap\" : { \"dave\" : { \"firstname\" : \"Dave\", \"lastname\" : \"Matthews\", \"address\" : { \"zipCode\" : \"zipCode\", \"city\" : \"City\" } }, \"deborah\" : { \"firstname\" : \"Deborah Anne\", \"lastname\" : \"Dyer\", \"address\" : { \"zipCode\" : \"?\", \"city\" : \"london\" } }, \"eddie\" : { \"firstname\" : \"Eddie\", \"lastname\" : \"Vedder\", \"address\" : { \"zipCode\" : \"??\", \"city\" : \"Seattle\" } } }, \"_class\" : \"org.springframework.data.mongodb.core.convert.MappingMongoConverterBenchmark$SlightlyMoreComplexObject\" }");

}