日期:2014-05-16  浏览次数:20512 次

使用springdata操作需要授权的mongodb

? ? ?上次的介绍是说直接操作mongodb没有经过用户验证的方式,这次记录下使用需要用户验证的情况。

首先在mongo中加入用户的时候需要在首先use想授权的db,例如,如果在admin db中加入用户然后授权,在use其他库后,授权会失败的。

?

? ? 不需要把mongo和mongoDbFactory一起当做构造函数。
mongo的参数比较少,不支持用户验证的方式。mongo支持参数,<mongo:mongo host="59.215.191.107" port="37117" id="a" replica-set="1" write-concern="1" ? />
如果需要用户验证怎需要使用mongoDbFactory元素。

?

直接说下spring中的配置

?

<mongo:db-factory username="test" password="z097310" host="58.215.190.107" port="3787"  dbname="todo" />
    <bean id="mongoOps" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg ref="mongoDbFactory"/>
    </bean>

?看下MongoTemplate的代码

?

? ? public MongoTemplate(org.springframework.data.mongodb.MongoDbFactory mongoDbFactory) { /* compiled code */ }

。配置好后,直接写测试用例查询

?

       
        User user = new User("1","1",1,1);
        mongoOps.insert(user);
        DBCollection dBCollection = mongoOps.getCollection("user");
        System.out.println("Number of user = " + dBCollection.getCount());
?