问题描述
我正在尝试修改:https://www.baeldung.com/spring-data-mongodb-tutorial以连接到MongoDB Atlas云实例(https://www.mongodb.com/cloud/atlas)
这是本地数据库连接:
我正在尝试将其更改为:
<mongo:mongo-client host="cluster.test.mongodb.net/" port="27017" id="mongoClient" credentials="dbUser:password****@mydb">
</mongo:mongo-client>
我应该在哪里以及如何定义属性凭证?
我正在使用MongoDB驱动程序版本4.0.5
整个mongoConfig.xml:
<?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:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p" 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.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<context:annotation-config />
<mongo:mongo-client host="cluster.test.mongodb.net/" port="27017" id="mongoClient" credentials="dbUser:password****@mydb">
</mongo:mongo-client>
<mongo:db-factory id="mongoDbFactory" dbname="test" mongo-client-ref="mongoClient" />
<bean id="gridFstemplate" class="org.springframework.data.mongodb.gridfs.GridFstemplate">
<constructor-arg ref="mongoDbFactory" />
<constructor-arg ref="mongoConverter" />
</bean>
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg ref="mongoDbFactory" />
<constructor-arg ref="mongoConverter" />
</bean>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />
<mongo:repositories base-package="com.baeldung.repository" mongo-template-ref="mongoTemplate" />
<bean class="com.baeldung.event.CascadeSaveMongoEventListener">
</bean>
<mongo:mapping-converter id="mongoConverter" base-package="com.baeldung.converter">
<mongo:custom-converters base-package="com.baeldung.converter" />
</mongo:mapping-converter>
</beans>
我遵循了这个https://developpaper.com/notes-for-spring-xml-mongodb-connection-configuration-specifying-user-name-and-password/教程,其中的定义为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mongo="http://www.springframework.org/schema/data/mongo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
<mongo:mongo-client host="${mongo.host}" port="${mongo.port}" id="mongoClient" credentials="${mongo.username}:${mongo.password}@${mongo.dbname}">
</mongo:mongo-client>
<mongo:db-factory dbname="${mongo.dbname}" mongo-ref="mongoClient" id="mongoDbFactory" />
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
</beans>
解决方法
此问题已解决:
spring.data.mongodb.uri=mongodb+srv://admin:<password>@umadit-obxpb.mongodb.net/test?retryWrites=true&w=majority
来自问题:How to connect Mongodb Atlas to Spring
我使用application.properties而不是XML config进行连接。