spring data mongo - 没有定义名为“mongoTemplate”的bean

aus*_*tin 6 java spring mongodb spring-data spring-data-mongodb

我有一个 Spring Data mongo 存储库类

public interface MyRepository extends MongoRepository<FeedbackDTO, String> {
}
Run Code Online (Sandbox Code Playgroud)

在测试配置中我使用 EnableMongoRepositories 注释

@EnableMongoRepositories(basePackages={"com.mypackage.repository.mongodb"})
public class ServiceTestConfiguration {
Run Code Online (Sandbox Code Playgroud)

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

引起:org.springframework.beans.factory.NoSuchBeanDefinitionException:在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:698) ~[spring-beans-4.2. 4.RELEASE.jar:4.2.4.RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1175) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4 .RELEASE] 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:284) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 在 org.springframework.beans .factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] 在 org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference( BeanDefinitionValueResolver.java:351) ~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE] ... 省略 57 个常见框架

woe*_*ler 6

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

@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);
    }

}
Run Code Online (Sandbox Code Playgroud)

  • Spring 2.1 中该类已重命名为 AbstractMongoClientConfiguration (3认同)