之前的項目中 打算用springmvc 搞個web來方便訪問
數據庫 當然是用mongo
遇到的問題是: spring下自帶的 只支持2.X的 mongo driver
這點 從 只能 get出 DB DBCollection 就可以看出了
<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.8.2.RELEASE</version> </dependency>
<dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-driver</artifactId> <version>3.3.0</version> </dependency>
但是 mongo 3.X 和 2.X 在 用戶校驗 這點上又有 那麼些差別 ( 主要是 在 mechanism 參數 MONGODB-CR 和 SCRAM-SHA-1 的區別)
順帶吐槽百度,確實找不到什麼合適的答案,在google的搜索結果裏面得到一些啓示
就採用 spring自帶的 bean注入配置 MongoClient
<!-- Seeds ip port list-->
<bean id="mongoSeedListID" class="java.util.ArrayList">
<constructor-arg>
<list>
<ref bean="mongoSeedlID"/>
</list>
</constructor-arg>
</bean>
<bean id="mongoSeedlID" class="com.mongodb.ServerAddress">
<constructor-arg type="java.lang.String" name="host" value="${mongo_ip}"/>
<constructor-arg type="int" name="port" value="${mongo_port}"/>
</bean>
<!-- Credentials -->
<bean id="mongoCredentialListID" class="java.util.ArrayList">
<constructor-arg>
<list>
<ref bean="mongoCredentialID"/>
</list>
</constructor-arg>
</bean>
<bean id="mongoCredentialID" class="com.mongodb.MongoCredential">
<constructor-arg name="mechanism" value="#{T(com.mongodb.AuthenticationMechanism).SCRAM_SHA_1}"/>
<constructor-arg type="java.lang.String" name="userName" value="${auth_username}"/>
<constructor-arg type="java.lang.String" name="source" value="${auth_dbname}"/>
<constructor-arg type="char[]" name="password" value="${auth_password}"/>
</bean>
<!-- MongoClient -->
<bean id="mongoClientID" class="com.mongodb.MongoClient">
<constructor-arg ref="mongoSeedListID"/>
<constructor-arg ref="mongoCredentialID"/>
</bean>