2016-02-29 61 views
1

我在测试配置弹簧数据MONGO仓储类春数据蒙戈 - 没有名为“mongoTemplate”豆被定义

public interface MyRepository extends MongoRepository<FeedbackDTO, String> { 
} 

我使用EnableMongoRepositories注释

@EnableMongoRepositories(basePackages={"com.mypackage.repository.mongodb"}) 
public class ServiceTestConfiguration { 

当我尝试测试使用此存储库的服务类它会引发异常

由org.springframework.beans.factor引起y.NoSuchBeanDefinitionException:没有名为'mongoTemplate'的bean在org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:698)〜[spring-beans-4.2.4.RELEASE.jar:4.2。 4.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175)〜[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org。 springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284)〜[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support。 AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)〜[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValue Resolver.java:351)〜[弹簧豆-4.2.4.RELEASE.jar:4.2.4.RELEASE] ... 57个共同帧省略

回答

2

@EnableMongoRepositories注释将在触发库豆的创作启动,但您仍然需要注册MongoDB连接并创建注入这些存储库的MongoTemplate实例。请参阅Spring Data MongoDB documentation。这里是一个例子:

@Configuration 
@PropertySource({ "classpath:mongodb-data-source.properties" }) 
public class MongodbDataSourceConfig extends AbstractMongoConfiguration { 

    @Autowired Environment env; 

    @Override 
    public String getDatabaseName(){ 
     return env.getRequiredProperty("mongo.name"); 
    } 

    @Override 
    @Bean 
    public Mongo mongo() throws Exception { 

     ServerAddress serverAddress = new ServerAddress(env.getRequiredProperty("mongo.host")); 
     List<MongoCredential> credentials = new ArrayList<>(); 
     credentials.add(MongoCredential.createScramSha1Credential(
       env.getRequiredProperty("mongo.username"), 
       env.getRequiredProperty("mongo.name"), 
       env.getRequiredProperty("mongo.password").toCharArray() 
     )); 
     MongoClientOptions options = new MongoClientOptions.Builder() 
      .build(); 
     return new MongoClient(serverAddress, credentials, options); 
    } 

} 
+0

谢谢。那工作。 – austin

相关问题