一、使用xml配置mongo连接(不需要身份认证)
1、通过xml直接写死
username:mongo数据库的用户名
password:mongo数据库的密码
host:mongo数据库的域名(本地可以使用127.0.0.1)
port:mongo数据库的端口号(默认是27017)
dbname:mongo数据库的访问库名
<mongo:db-factory id="mongoDbFactory" client-uri="mongodb://username:password@host:port/dbname"/>
2、通过配置文件配置
第一步在properties配置文件中定义一个“MONGO_URL”属性。
MONGO_URL=mongodb://username:password@host:port/dbname
第二步在xml文件中进行配置。
<mongo:db-factory id="mongoDbFactory" client-uri="${MONGO_URL}"/>
二、使用xml配置mongo连接(需要身份认证)
第一步在xml文件中添加一个mongo-client。
MONGO_HOST:
mongo数据库的域名(本地可以使用127.0.0.1)
MONGO_PORT:
mongo数据库的端口号(默认是27017)
MONGO_USERNAME:
mongo数据库的用户名
MONGO_PASSWORD:
mongo数据库的密码
MONGO_AUTH:mongo数据库的认证名
(注意:我这里的参数都是配置在配置文件中的,如果你是直接写死就不需要加“${}”。credentials参数一定是“用户名:密码@认证名”的形式,其中的“:“和”@”符号不要忘记)
<mongo:mongo-client id="mongo" host="${MONGO_HOST}" port="${MONGO_PORT}" credentials="${MONGO_USERNAME}:${MONGO_PASSWORD}@${MONGO_AUTH}" ></mongo:mongo-client>
第二步在xml文件中添加一个db-factory。
MONGO_DATABASE:需要连接的mongo库名
(注意:mongo-ref的参数是上面配置中的id属性值)
<mongo:db-factory id="mongoDbFactory" dbname="${MONGO_DATABASE}" mongo-ref="mongo" />
三、源码解析
以上使用spring通过xml进行mongo身份认证已经完成。后面还需要配置mongoTemplate的bean。
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>
这里重点讲解身份认证,首先进入spring的官方文档:https://spring.io/。
1、点击“PROJECTS”
2、选择“SPRING DATA”
3、选择“spring Data MongoDB”
4、选择“Learn”
5、选择“Reference”
打开文档后直接找到介绍使用xml配置连接的地方
进去之后第一步就是让你创建com.mongodb.MongoClient
容器,也就是我上面xml配置中的mongo-client。文档中也有代码示例。
译文:
虽然您可以使用Spring的传统<beans/>
XML命名空间来注册com.mongodb.MongoClient
容器的实例,但XML可能非常冗长,因为它是通用的。XML命名空间是配置常用对象(如Mongo实例)的更好选择。mongo命名空间允许您创建Mongo实例服务器位置,副本集和选项。
接着找到“MongoDbFactory
使用基于XML的元数据注册实例”,这里就让我们创建一个db-factory来接收我们创建的com.mongodb.MongoClient
容器。
译文:
如果需要在com.mongodb.MongoClient
用于创建a 的实例上配置其他选项,则SimpleMongoDbFactory
可以使用该mongo-ref
属性引用现有bean,如以下示例所示。为了显示另一种常见的使用模式,下面的清单显示了属性占位符的使用,它允许您参数化配置和创建MongoTemplate
再往下就是创建mongoTemplate。
译文:
有几个重载的构造函数MongoTemplate
:
-
MongoTemplate(MongoClient mongo, String databaseName)
:采用MongoClient
对象和默认数据库名称进行操作。 -
MongoTemplate(MongoDbFactory mongoDbFactory)
:使用封装了MongoClient
对象,数据库名称以及用户名和密码的MongoDbFactory对象。 -
MongoTemplate(MongoDbFactory mongoDbFactory, MongoConverter mongoConverter)
:添加一个MongoConverter
用于映射。
到此就可以完成mongo的连接工作,可是在以上的官方文档中并没有介绍如何进行mongo身份认证。别急我们接着往下找。
把目录翻到最后有一个认证,点击认证。
下图就是官方对mongo身份认证的介绍。