|  | @@ -17,16 +17,16 @@ import org.springframework.data.mongodb.config.EnableMongoAuditing;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.MongoTemplate;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.convert.DefaultDbRefResolver;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
 | 
	
		
			
				|  |  | +import org.springframework.data.mongodb.core.convert.MongoConverter;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.convert.MongoCustomConversions;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
 | 
	
		
			
				|  |  | +import org.springframework.data.mongodb.gridfs.GridFsTemplate;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.ArrayList;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - * 集成自动配置
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | +/** 集成自动配置 */
 | 
	
		
			
				|  |  |  @Configuration
 | 
	
		
			
				|  |  |  @EnableMongoAuditing
 | 
	
		
			
				|  |  |  @ComponentScan({"com.zswl.dataservicestarter", "com.zswl.dataservicestarter.helper"})
 | 
	
	
		
			
				|  | @@ -34,69 +34,82 @@ import java.util.List;
 | 
	
		
			
				|  |  |  @Import(PaginationConfiguration.class)
 | 
	
		
			
				|  |  |  public class MongoConfiguration {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  static {
 | 
	
		
			
				|  |  | +    // jdk 11 以上,强制使用 TLSv1.3 ,  mongo 驱动目前兼容 TLSv1.2
 | 
	
		
			
				|  |  | +    System.setProperty("jdk.tls.client.protocols", "TLSv1.2");
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    static {
 | 
	
		
			
				|  |  | -        //jdk 11 以上,强制使用 TLSv1.3 ,  mongo 驱动目前兼容 TLSv1.2
 | 
	
		
			
				|  |  | -        System.setProperty("jdk.tls.client.protocols", "TLSv1.2");
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 自定义转换器
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * @param mongoDbFactory
 | 
	
		
			
				|  |  | +   * @param mongoMappingContext
 | 
	
		
			
				|  |  | +   * @return
 | 
	
		
			
				|  |  | +   * @throws Exception
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  @Bean
 | 
	
		
			
				|  |  | +  @ConditionalOnMissingBean
 | 
	
		
			
				|  |  | +  public MappingMongoConverter mappingMongoConverter(
 | 
	
		
			
				|  |  | +      MongoDatabaseFactory mongoDbFactory, MongoMappingContext mongoMappingContext)
 | 
	
		
			
				|  |  | +      throws Exception {
 | 
	
		
			
				|  |  | +    DefaultDbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
 | 
	
		
			
				|  |  | +    MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
 | 
	
		
			
				|  |  | +    List<Object> list = new ArrayList<>();
 | 
	
		
			
				|  |  | +    list.add(new BigDecimalToDecimal128Converter()); // 自定义的类型转换器
 | 
	
		
			
				|  |  | +    list.add(new Decimal128ToBigDecimalConverter()); // 自定义的类型转换器
 | 
	
		
			
				|  |  | +    converter.setCustomConversions(new MongoCustomConversions(list));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 自定义转换器
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param mongoDbFactory
 | 
	
		
			
				|  |  | -     * @param mongoMappingContext
 | 
	
		
			
				|  |  | -     * @return
 | 
	
		
			
				|  |  | -     * @throws Exception
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Bean
 | 
	
		
			
				|  |  | -    @ConditionalOnMissingBean
 | 
	
		
			
				|  |  | -    public MappingMongoConverter mappingMongoConverter(MongoDatabaseFactory mongoDbFactory, MongoMappingContext mongoMappingContext) throws Exception {
 | 
	
		
			
				|  |  | -        DefaultDbRefResolver dbRefResolver = new DefaultDbRefResolver(mongoDbFactory);
 | 
	
		
			
				|  |  | -        MappingMongoConverter converter = new MappingMongoConverter(dbRefResolver, mongoMappingContext);
 | 
	
		
			
				|  |  | -        List<Object> list = new ArrayList<>();
 | 
	
		
			
				|  |  | -        list.add(new BigDecimalToDecimal128Converter());//自定义的类型转换器
 | 
	
		
			
				|  |  | -        list.add(new Decimal128ToBigDecimalConverter());//自定义的类型转换器
 | 
	
		
			
				|  |  | -        converter.setCustomConversions(new MongoCustomConversions(list));
 | 
	
		
			
				|  |  | +    return converter;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        return converter;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 事务
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * @param dbFactory
 | 
	
		
			
				|  |  | +   * @return
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  @Bean
 | 
	
		
			
				|  |  | +  MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
 | 
	
		
			
				|  |  | +    return new MongoTransactionManager(dbFactory);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 事务
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @param dbFactory
 | 
	
		
			
				|  |  | -     * @return
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Bean
 | 
	
		
			
				|  |  | -    MongoTransactionManager transactionManager(MongoDatabaseFactory dbFactory) {
 | 
	
		
			
				|  |  | -        return new MongoTransactionManager(dbFactory);
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 配置读写分离
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * @return
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  @Bean
 | 
	
		
			
				|  |  | +  public ReadPreference readPreference(MongoTemplate mongoTemplate) {
 | 
	
		
			
				|  |  | +    //        首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
 | 
	
		
			
				|  |  | +    ReadPreference readPreference = ReadPreference.primaryPreferred();
 | 
	
		
			
				|  |  | +    mongoTemplate.setReadPreference(readPreference);
 | 
	
		
			
				|  |  | +    return readPreference;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    /**
 | 
	
		
			
				|  |  | -     * 配置读写分离
 | 
	
		
			
				|  |  | -     *
 | 
	
		
			
				|  |  | -     * @return
 | 
	
		
			
				|  |  | -     */
 | 
	
		
			
				|  |  | -    @Bean
 | 
	
		
			
				|  |  | -    public ReadPreference readPreference(MongoTemplate mongoTemplate) {
 | 
	
		
			
				|  |  | -//        首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
 | 
	
		
			
				|  |  | -        ReadPreference readPreference = ReadPreference.primaryPreferred();
 | 
	
		
			
				|  |  | -        mongoTemplate.setReadPreference(readPreference);
 | 
	
		
			
				|  |  | -        return readPreference;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  @Bean
 | 
	
		
			
				|  |  | +  public DocumentCodec documentCodec(MongoDatabaseFactory dbFactory) {
 | 
	
		
			
				|  |  | +    return new DocumentCodec(dbFactory.getCodecRegistry());
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    @Bean
 | 
	
		
			
				|  |  | -    public DocumentCodec documentCodec(MongoDatabaseFactory dbFactory) {
 | 
	
		
			
				|  |  | -        return new DocumentCodec(dbFactory.getCodecRegistry());
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * GridFs
 | 
	
		
			
				|  |  | +   *
 | 
	
		
			
				|  |  | +   * @param mongoDbFactory
 | 
	
		
			
				|  |  | +   * @param mongoConverter
 | 
	
		
			
				|  |  | +   * @return
 | 
	
		
			
				|  |  | +   */
 | 
	
		
			
				|  |  | +  @Bean
 | 
	
		
			
				|  |  | +  public GridFsTemplate gridFsTemplate(
 | 
	
		
			
				|  |  | +      MongoDatabaseFactory mongoDbFactory, MongoConverter mongoConverter) {
 | 
	
		
			
				|  |  | +    return new GridFsTemplate(mongoDbFactory, mongoConverter);
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -// 	 @EventListener(ApplicationReadyEvent.class)
 | 
	
		
			
				|  |  | -//	 public void initIndicesAfterStartup() {
 | 
	
		
			
				|  |  | -//
 | 
	
		
			
				|  |  | -//	    IndexOperations indexOps = mongoTemplate.indexOps(DomainType.class);
 | 
	
		
			
				|  |  | -//
 | 
	
		
			
				|  |  | -//	     IndexResolver resolver = new MongoPersistentEntityIndexResolver(mongoMappingContext);
 | 
	
		
			
				|  |  | -//	     resolver.resolveIndexFor(DomainType.class).forEach(indexOps::ensureIndex);
 | 
	
		
			
				|  |  | -//	 }
 | 
	
		
			
				|  |  | +  // 	 @EventListener(ApplicationReadyEvent.class)
 | 
	
		
			
				|  |  | +  //	 public void initIndicesAfterStartup() {
 | 
	
		
			
				|  |  | +  //
 | 
	
		
			
				|  |  | +  //	    IndexOperations indexOps = mongoTemplate.indexOps(DomainType.class);
 | 
	
		
			
				|  |  | +  //
 | 
	
		
			
				|  |  | +  //	     IndexResolver resolver = new MongoPersistentEntityIndexResolver(mongoMappingContext);
 | 
	
		
			
				|  |  | +  //	     resolver.resolveIndexFor(DomainType.class).forEach(indexOps::ensureIndex);
 | 
	
		
			
				|  |  | +  //	 }
 | 
	
		
			
				|  |  |  }
 |