1,首先maven工程引入相关jar(spring-data-mongodb版本太低后面连接数据库时会报异常,具体异常忘了......)
<!-- mongodb -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver</artifactId>
<version>3.2.2</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.8.0.RELEASE</version>
</dependency>
2,applicationContext-mongodb.xml的配置文件(此处可以独立一个配置文件)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
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/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
<!-- 如果重复的文件是会报错的 -->
<!-- <context:property-placeholder location="classpath:properties/jdbc.properties" /> -->
<context:component-scan base-package="com.ky"/>
<!-- 1.7版本+不支持mongo,支持mongo-client,options为client-options -->
<!-- Usage of 'UserCredentials' with 'MongoClient' is no longer supported -->
<!-- 配置mongodb连接池 ,创建mongoClient实例-->
<!--credentials="mongodb://${mongo.user}:${mongo.pwd}@${mongo.host}:${mongo.port}/${mongo
.defaultDbName}"为什么不起作用
如果需要验证,mongo-client需要加这句: credentials="${mongo.user}:${mongo.pwd}@${mongo.defaultDbName}"
-->
<mongo:mongo-client id="mongoClient" host="${mongo.host}" port="${mongo.port}" >
<mongo:client-options
connections-per-host="${mongo.connectionsPerHost}"
min-connections-per-host="${mongo.minConnectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
connect-timeout="${mongo.connectTimeout}"
max-wait-time="${mongo.maxWaitTime}"
socket-keep-alive="${mongo.socketKeepAlive}"
socket-timeout="${mongo.socketTimeout}"
description="${mongo.description}"
max-connection-idle-time="${mongo.maxConnectionIdleTime}"
max-connection-life-time="${mongo.maxConnectionLifeTime}"
heartbeat-socket-timeout="${mongo.heartbeatSocketTimeout}"
heartbeat-connect-timeout="${mongo.heartbeatConnectTimeout}"
min-heartbeat-frequency="${mongo.minHeartbeatFrequency}"
heartbeat-frequency="${mongo.heartbeatFrequency}"
/>
</mongo:mongo-client>
<!-- dbname="${mongo.defaultDbName}" host="${mongo.host}"
port="${mongo.port}" username="${mongo.user}" password="${mongo.pwd}"
mongo-ref="mongoClient" -->
<mongo:db-factory id="mongoDbFactory"
dbname="${mongo.defaultDbName}"
mongo-ref="mongoClient"/>
<!-- 1.Spring提供的mongodb操作模板-->
<!-- <mongo:template id="mongoTemplate" db-factory-ref="mongoDbFactory" write-concern="NORMAL"/> -->
<!-- 2.Spring提供的mongodb操作模板-->
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory" />
</bean>
<!-- MongoDB GridFS Template 支持,操作mongodb存放的文件 -->
<mongo:mapping-converter id="converter" db-factory-ref="mongoDbFactory"
base-package="xxxx.dao"/>
<mongo:gridFsTemplate id="gridFsTemplcate" db-factory-ref="mongoDbFactory" converter-ref="converter" />
<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->
<!-- <mongo:repositories base-package="xxx.bean" /> -->
<!--激活注解-->
<bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor"/>
</beans>
其中,连接数据库可以使用密码,也可以不用密码,这里因为时自己跑的程序所以数据库没有设置密码
1.7版本+不支持mongo,支持mongo-client,options为client-options,如果使用mongo并且使用useCredentials,则会出现Usage of 'UserCredentials' with 'MongoClient' is no longer supported
提示,编译出错。
根据某些教程甚至是官网也能看到下面这种认证配置,但是经测试在1.8的版本中不起任何作用。
credentials="mongodb://${mongo.user}:${mongo.pwd}@${mongo.host}:${mongo.port}/${mongo.defaultDbName}"
3,jdbc.properties配置文件
mongo.host=192.168.xxx.xxx
mongo.port=27017
mongo.defaultDbName=mylearndb
#mongo.user=joyven
#mongo.pwd=123456
mongo.connectionsPerHost=10
mongo.threadsAllowedToBlockForConnectionMultiplier=5
mongo.minConnectionsPerHost=5
#\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4
mongo.connectTimeout=10000
#\u7B49\u5F85\u65F6\u95F4
mongo.maxWaitTime=120000
#Socket\u8D85\u65F6\u65F6\u95F4
mongo.socketTimeout=0
mongo.socketKeepAlive=true
mongo.description=joyven test mongodb database
mongo.maxConnectionIdleTime=1500
mongo.maxConnectionLifeTime=0
#mongo slave
mongo.heartbeatSocketTimeout=1000
mongo.heartbeatConnectTimeout=1500
mongo.minHeartbeatFrequency=5
mongo.heartbeatFrequency=10
补上几个参考的链接:
https://segmentfault.com/a/1190000005829384
https://blog.csdn.net/zhanglf02/article/details/77937850