<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
        xsi:schemaLocation="http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
     <!--从1.7开始定义访问MongoDB的MongoClient
     id:MongoClient的名称,默认值:mongoClient
     port:连到到MongoDB服务器的端口号,默认:27017
     host:连接到MongoDB服务器的host,默认:localhost
     replica-set:逗号分隔的的副本集集合,格式为host:port,host:port
     credentials:用户身份认证逗号分隔的配置,格式:username:password@database,如果传递的认证包含逗号,则使用单引号括起来
     -->
     <mongo:mongo-client id="mongoClient"  host="172.25.16.117" port="27017"
                         credentials="user:password@db" replica-set="">
         <!--
         description : 描述
         min-connections-per-host:客户端最小连接数
         connections-per-host:客户端最大连接数,超过了将会被阻塞,默认100
         threads-allowed-to-block-for-connection-multiplier:可被阻塞的线程数因子,默认值为5,如果connectionsPerHost
         配置为10,那么最多能阻塞50个线程,超过50个之后就会收到一个异常
         max-wait-time:阻塞线程获取连接的最长等待时间,默认120000 ms
         max-connection-idle-time:连接池连接最大空闲时间
         max-connection-life-time:连接池连接的最大存活时间
         connect-timeout:连接超时时间,默认值是0,就是不超时
         socket-timeout:socket超时时间,默认值是0,就是不超时
         socket-keep-alive:keep alive标志,默认false
       server-selection-timeout:服务器查询超时时间,它定义驱动在抛出异常之前等待服务器查询成功,默认30s,单位milliseconds
         read-preference:MongoDB有5种ReadPreference模式:
             primary    主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。
             primaryPreferred   首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
             secondary    从节点,读操作只在从节点, 如果从节点不可用,报错或者抛出异常。
             secondaryPreferred    首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。
             nearest    最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点。
         write-concern:WriteConcern的7种写入安全机制抛出异常的级别:
             NONE:没有异常抛出
             NORMAL:仅抛出网络错误异常,没有服务器错误异常,写入到网络就返回
             SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。
             MAJORITY: 抛出网络错误异常、服务器错误异常;并多数主服务器完成写操作。
             FSYNC_SAFE: 抛出网络错误异常、服务器错误异常;写操作等待服务器将数据刷新到磁盘。
             JOURNAL_SAFE:抛出网络错误异常、服务器错误异常;写操作等待服务器提交到磁盘的日志文件。
             REPLICAS_SAFE:抛出网络错误异常、服务器错误异常;等待至少2台服务器完成写操作。
         heartbeat-frequency:驱动用来确保集群中服务器状态的心跳频率
         min-heartbeat-frequency:驱动重新检查服务器状态最少等待时间
         heartbeat-connect-timeout:集群心跳连接的超时时间
         heartbeat-socket-timeout:集群心跳连接的socket超时时间
         ssl:驱动是否使用ssl进行连接,默认是false
         ssl-socket-factory-ref:用来进行ssl连接的SSLSocketFactory,如果配置为none,则使用SSLSocketFactory.getDefault()
         -->
         <mongo:client-options
                 description=""
                 min-connections-per-host=""
         />    </mongo:mongo-client>
     <mongo:db-factory id="mongoDbFactory" dbname="member" mongo-ref="mongoClient"/>
     <mongo:template id="mongoTemplate" db-factory-ref="mongoDbFactory" write-concern="NORMAL"/>
 </beans>