spring中配置mongoDB

spring中配置MongoDB有两种方式:注解方式和配置文件方式

1、注解方式

配置类要继承AbstractMongoConfiguration类,重写mongo()和mongoTemplate()方法

import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.Configuration;  
import org.springframework.data.document.mongodb.MongoTemplate;  
import org.springframework.data.document.mongodb.config.AbstractMongoConfiguration;  
import com.mongodb.Mongo;  
/** 
* Spring MongoDB configuration file 
*/  
@Configuration  
public class SpringMongoConfig extends AbstractMongoConfiguration {  
    @Override  
    public @Bean Mongo mongo() throws Exception {  
        return new Mongo("localhost");  
    }  
    @Override  
    public @Bean MongoTemplate mongoTemplate() throws Exception {  
        return new MongoTemplate(mongo(),"mydbname","myCollection");  
    }  
}  
调用Spring Mongo配置,只需要在需要使用的类中调用AnnotationConfigApplicationContext,传入刚才配置好的SpringMongoConfig类即可。


ApplicationContext ac = new AnnotationConfigApplicationContext(SpringMongoConfig.class);  
MongoOperations mo = (MongoOperations)ac.getBean("mongoTemplate");  
至此便可对MongoDB进行操作了


2、配置文件的方式

<?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">  
      
    <!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->  
    <mongo:mongo id="mongo" replica-set="IP:端口号">  
        <!-- 一些连接属性的设置 -->      
        <mongo:options  
             connections-per-host="最大连接数"  
             threads-allowed-to-block-for-connection-multiplier="最大阻塞线程数"  
             max-wait-time="最大等待时间"  
             connect-timeout="连接超时时间"
             socket-keep-alive="是否保持长连接" 
         />          
    </mongo:mongo>  
  
    <!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->  
    <mongo:db-factory dbname="mongo中数据名称" mongo-ref="mongo"/>  
  
    <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->  
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">  
      <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>  
    </bean>  
      
    <!-- 映射转换器,扫描base-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射 -->  
    <mongo:mapping-converter base-package="collection映射所在包名" />  
      
    <!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->  
    <mongo:repositories base-package="Repository所在包名"/>  
  
</beans>  


补充各个参数说明:

#对mongo实例来说,每个host允许链接的最大链接数,这些链接空闲时会放入池中,如果链接被耗尽,任何请求链接的操作会被阻塞等待链接可用,推荐配置10
connectionsPerHost=10
#当链接空闲时,空闲线程池中最大链接数
minPoolsSize=5
#此参数跟connectionsPerHost的乘机为一个线程变为可用的最大阻塞数,超过此乘机数之后的所有线程将及时获取一个异常.eg.connectionsPerHost=10 and threadsAllowedToBlockForConnectionMultiplier=5,最多50个线程等级一个链接,推荐配置为5
threadsAllowedToBlockForConnectionMultiplier=5
#一个线程等待链接可用的最大等待毫秒数,0表示不等待,负数表示等待时间不确定,推荐配置120000
maxWaitTime=120000
#链接超时的毫秒数,0表示不超时,此参数只用在新建一个新链接时,推荐配置10,000.
connectTimeout=10000
#此参数表示socket I/O读写超时时间,推荐为不超时,即 0    Socket.setSoTimeout(int)
socketTimeout=0
#该标志用于控制socket保持活动的功能,通过防火墙保持连接活着
socketKeepAlive=false
#true:假如链接不能建立时,驱动将重试相同的server,有最大的重试次数,默认为15次,这样可以避免一些server因为一些阻塞操作零时down而驱动抛出异常,这个对平滑过度到一个新的master,也是很有用的,注意:当集群为复制集时,驱动将在这段时间里,尝试链接到旧的master上,而不会马上链接到新master上
#false 当在进行socket读写时,不会阻止异常抛出,驱动已经有自动重建破坏链接和重试读操作. 推荐配置false
autoConnectRetry=false
#重新打开链接到相同server的最大毫秒数,推荐配置为0,如果 autoConnectRetry=true,表示时间为15s
#com.jd.mongodbclient2.mongo.JDClientMongo.maxAutoConnectRetryTime=false
#表示当没有手动关闭游标时,是否有一个自动释放游标对象的方法,如果你总是很小心的关闭游标,则可以将其设为false 推荐配置true

#com.jd.mongodbclient2.mongo.JDClientMongo.cursorFinalizerEnabled=true

#安全模式

com.jd.mongodbclient2.driver.MongoDBDriver.safe=true

#为true表示读写分离

com.jd.mongodbclient2.driver.MongoDBDriver.slaveOk=false


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值