2012-01-03 49 views
1

我對SpringData MongoDB的一些測試程序的工作,我做了同樣的,作爲其http://static.springsource.org/spring-data/data-document/docs/1.0.0.M2/reference/html/#mongo.core提到的擊打其表現異常異常而通過連接數據春到MongoDB的

package com.springMongo.core; 

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.annotation.AnnotationConfigApplicationContext; 
import org.springframework.data.mongodb.core.MongoOperations; 
import org.springframework.data.mongodb.core.query.Query; 
import org.springframework.data.mongodb.core.query.Criteria; 

import com.springMongo.config.MongoConfig; 
import com.springMongo.person.Person; 



public class MongoApp { 

    private static final Log log = LogFactory.getLog(MongoApp.class); 

    public static void main(String[] args) { 
    ApplicationContext ctx = new AnnotationConfigApplicationContext(MongoConfig.class); 
    MongoOperations mongoOps = ctx.getBean(MongoOperations.class); 

    mongoOps.insert(new Person("1234", "Joe")); 

    log.info(mongoOps.findOne(new Query(Criteria.where("name").is("Joe")), Person.class)); 
    } 

} 



package com.springMongo.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.data.mongodb.core.MongoTemplate; 
import org.springframework.data.mongodb.config.AbstractMongoConfiguration; 

import com.mongodb.Mongo; 

/** 
* Spring MongoDB configuration file 
* 
*/ 
@Configuration 
public class MongoConfig extends AbstractMongoConfiguration { 

    @Override 
    public Mongo mongo() throws Exception { 
    return new Mongo("128.0.0.1",10001); 
    } 

    @Override 
    public MongoTemplate mongoTemplate() throws Exception { 
    return new MongoTemplate(mongo() , "try_db"); 
    } 

@Override 
public String getDatabaseName() { 
    // TODO Auto-generated method stub 
    return null; 
} 

} 






package com.springMongo.person; 

public class Person { 

     private String id; 

     private String name; 

     public Person(String id, String name) { 
     this.id = id; 
     this.name = name; 
     } 

     public String getId() { 
     return id; 
     } 

     public String getName() { 
     return name; 
     } 

     @Override 
     public String toString() { 
     return "Person [id=" + id + ", name=" + name + "]"; 
     } 

    } 

但運行MongoApp.java後,我我得到以下異常

2012年1月3日下午十二時41分28秒org.springframework.context.support.AbstractApplicationContext prepareRefresh 信息:清爽org.spring[email protected]7c64dc11:啓動日期[星期二年1月3 12:41:28 IST 2012];上下文層次結構的根 2012年1月3日下午12時41分29秒org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons 信息:預先實例化org.s[email protected]2b275d39中的單例:定義bean [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,mongoConfig,org.springframework.context。 annotation.ConfigurationClassPostProcessor $ ImportAwareBeanPostProcessor#0,蒙戈,mongoTemplate,mongoDbFactory,mongoMappingContext,mappingMongoConverter];工廠層次結構的根 2012年1月3日下午12點41分29秒org.springframework.beans.factory.support.DefaultSingletonBeanRegistry destroySingletons 信息:破壞org.s[email protected]2b275d39中的單例:定義bean [ org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,mongoConfig,org.springframework.context.annotation。 ConfigurationClassPostProcessor $ ImportAwareBeanPostProcessor#0,蒙戈,mongoTemplate,mongoDbFactory,mongoMappingContext,mappingMongoConverter]。工廠層次結構的根 線程「main」中的異常org.springframework.beans.factory.BeanCreationException:在類com.springMongo.config.MongoConfig中定義名稱爲'mongoDbFactory'的bean時創建錯誤:bean的實例化失敗;嵌套異常是org.springframework.beans.factory.BeanDefinitionStoreException:工廠方法[public org.springframework.data.mongodb.MongoDbFactory org.springframework.data.mongodb.config.AbstractMongoConfiguration.mongoDbFactory()throws java.lang.Exception]拋出異常;嵌套異常是java.lang.IllegalArgumentException:數據庫名稱不能爲空 at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:581) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory .instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1015) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:911) 在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java :485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springfr amework.beans.factory.support.AbstractBeanFactory $ 1.getObject(AbstractBeanFactory.java:294) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) at org.springframework.beans.factory .support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons (DefaultListableBeanFactory.java:585) at org.springframework.context.support.AbstractApplicationContext。finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 在org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 在org.springframework.context.annotation.AnnotationConfigApplicationContext。在(AnnotationConfigApplicationContext.java:73) COM .springMongo.core.MongoApp.main(MongoApp.java:21) 原因:org.springframework.beans.factory.BeanDefinitionStoreException:工廠方法[public org.springframework.data.mongodb.MongoDbFactory org.springframework.data.mongodb。 config.AbstractMongoConfiguration.mongoDbFactory()拋出java.lang.Exception]拋出異常;嵌套異常是java.lang.IllegalArgumentException:數據庫名稱不能爲空 at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:169) at org.springframework.beans.factory.support.ConstructorResolver .instantiateUsingFactoryMethod(ConstructorResolver.java:570) ...... 13多個 造成的:java.lang.IllegalArgumentException異常:數據庫名稱不能爲空 在org.springframework.util.Assert.hasText(Assert.java:162) at org.springframework.data.mongodb.core.SimpleMongoDbFactory。(SimpleMongoDbFactory.java:58) at org.springframework.data.mongodb.config.AbstractMongoConfiguration.mongoDbFactory(AbstractMongoConfiguration.java:54) at com.springMongo.config。 MongoConfi g $$ EnhancerByCGLIB $$ 2129bffe.CGLIB $ mongoDbFactory $ 3() at com.springMongo.config.MongoConfig $$ EnhancerByCGLIB $$ 2129bffe $$ FastClassByCGLIB $$ 7ac56fd1.invoke() at net.sf.cglib.proxy.MethodProxy .invokeSuper(MethodProxy.java:215) at org.springframework.context.annotation.ConfigurationClassEnhancer $ BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:280) at com.springMongo.config.MongoConfig $$ EnhancerByCGLIB $$ 2129bffe.mongoDbFactory() 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(來源不明) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(來源不明) 在java.lang.reflect.Method.invoke (未知來源) at org.springfr amework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:149) ...... 14多個

回答

1
  • 錯誤的IP地址? 128.0.0.1應該是127.0.0.1
  • ,你需要通過getDatabaseName()
+0

它的工作由於指定數據庫名稱:) – 2012-01-03 08:11:13