|  | @@ -13,12 +13,10 @@ import org.springframework.context.annotation.Configuration;
 | 
	
		
			
				|  |  |  import org.springframework.context.annotation.Import;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.MongoDatabaseFactory;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.MongoTransactionManager;
 | 
	
		
			
				|  |  | +import org.springframework.data.mongodb.config.AbstractMongoClientConfiguration;
 | 
	
		
			
				|  |  |  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.convert.*;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.gridfs.GridFsTemplate;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
 | 
	
	
		
			
				|  | @@ -26,7 +24,9 @@ import org.springframework.data.mongodb.repository.config.EnableMongoRepositorie
 | 
	
		
			
				|  |  |  import java.util.ArrayList;
 | 
	
		
			
				|  |  |  import java.util.List;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -/** 集成自动配置 */
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * 集成自动配置
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  |  @Configuration
 | 
	
		
			
				|  |  |  @EnableMongoAuditing
 | 
	
		
			
				|  |  |  @ComponentScan({"com.zswl.dataservicestarter", "com.zswl.dataservicestarter.helper"})
 | 
	
	
		
			
				|  | @@ -34,82 +34,79 @@ 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);
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 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);
 | 
	
		
			
				|  |  | +    //	 }
 | 
	
		
			
				|  |  |  }
 |