mongodb+;java giving';ok';当通过spring注入DB name时,不应为null

mongodb+;java giving';ok';当通过spring注入DB name时,不应为null,java,spring,mongodb,spring-data,Java,Spring,Mongodb,Spring Data,Mongodb版本-Mongodb-win32-i386-2.4.8 mongodb java驱动程序版本-mongo-java-driver-2.12.0 代码 堆栈跟踪 2014年1月5日下午7:26:50 com.mongodb.DBPortPool错误警告: 将DBPortPool清空到localhost/127.0.0.1:27017 b/c时出错 java.lang.IllegalArgumentException:“ok”不应为null。。。在 com.mongodb.Comman

Mongodb版本-Mongodb-win32-i386-2.4.8
mongodb java驱动程序版本-mongo-java-driver-2.12.0

代码

堆栈跟踪

2014年1月5日下午7:26:50 com.mongodb.DBPortPool错误警告: 将DBPortPool清空到localhost/127.0.0.1:27017 b/c时出错 java.lang.IllegalArgumentException:“ok”不应为null。。。在 com.mongodb.CommandResult.ok(CommandResult.java:43)位于 com.mongodb.CommandResult.throwOnError(CommandResult.java:109)位于 com.mongodb.DBTCPConnector.\u checkWriteError(DBTCPConnector.java:102) 在com.mongodb.DBTCPConnector.say(DBTCPConnector.java:142)上 com.mongodb.DBTCPConnector.say(DBTCPConnector.java:115)位于 com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:248)位于 com.mongodb.DBApiLayer$MyCollection.insert(DBApiLayer.java:204)位于 insert(DBCollection.java:148)位于 com.mongodb.DBCollection.insert(DBCollection.java:91)位于 com.mongodb.DBCollection.save(DBCollection.java:810)位于 com.mongodb.DBCollection.save(DBCollection.java:786)

Mongod控制台提供以下跟踪

Sun Jan 05 19:38:08.289[初始化并侦听]已接受来自的连接 127.0.0.1:50112#5(1个连接现在打开)Sun Jan 05 19:38:08.300[conn5]断言16256无效ns[

                                    tinyblogdb

                    .$cmd] ns:

                                    tinyblogdb

                    .$cmd query:{ getlasterror: 1 } Sun Jan 05 19:38:08.300 [conn5]       ntoskip:0 ntoreturn:-1 Sun Jan 05 19:38:08.300
[conn5]端部连接127.0.0.1:50112(0个连接未打开)

知道为什么会这样吗

更新

如果我将db名称硬编码到变量“dbn”,数据将被成功插入,我之前尝试的是在方法getDbName()中使用spring进行setter注入,下面的代码可以工作!现在我非常好奇,当我注入dbName时,为什么它不工作

    String dbn = "tinyblogdb";
    MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
    DB db = mongoClient.getDB(dbn);
    DBCollection collection = db.getCollection(getCollectionName());
    BasicDBObject dbObject = new BasicDBObject();
    dbObject.put("name","John Doe");
    collection.save(dbObject);

在执行setter注入时找到了它不起作用的原因,下面是spring注入的片段。尽管我将值放入CDATA部分,但空格仍然存在,并且空格也被读取为字符串的一部分。修剪字符串解决了这个问题。我真傻



确认getDbName()正在返回有效的内容。如果它是一个注入值,您几乎肯定没有正确地被注入,并传入null。

这就是我正在注入的内容,我发现空白即将出现。因此我不得不对其进行修剪。我想看看上面的调试输出。CDATA部分没有必要,fwiw。@Evancholy t这是一把空白!我也没注意到。只是在喝咖啡休息后。
    String dbn = "tinyblogdb";
    MongoClient mongoClient = new MongoClient( "localhost" , 27017 );
    DB db = mongoClient.getDB(dbn);
    DBCollection collection = db.getCollection(getCollectionName());
    BasicDBObject dbObject = new BasicDBObject();
    dbObject.put("name","John Doe");
    collection.save(dbObject);
    <![CDATA[ 

    tinyblogdb

                ]]>

    </value>
</property>