Java spring数据mongo-没有名为';mongoTemplate&x27;定义
我有一个SpringDataMongo存储库类Java spring数据mongo-没有名为';mongoTemplate&x27;定义,java,spring,mongodb,spring-data,spring-data-mongodb,Java,Spring,Mongodb,Spring Data,Spring Data Mongodb,我有一个SpringDataMongo存储库类 public interface MyRepository extends MongoRepository<FeedbackDTO, String> { } 当我尝试测试使用此存储库的服务类时,它会抛出一个异常 原因:org.springframework.beans.factory.NoSuchBean定义异常:未定义名为“mongoTemplate”的bean 在org.springframework.beans.factory.
public interface MyRepository extends MongoRepository<FeedbackDTO, String> {
}
当我尝试测试使用此存储库的服务类时,它会抛出一个异常
原因:org.springframework.beans.factory.NoSuchBean定义异常:未定义名为“mongoTemplate”的bean
在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.resolverence(BeanDefinitionValueResolver.java:351)~[spring-beans-4.2.4.RELEASE.jar:4.2.4.RELEASE]
... 省略57个公共框架
@enablemongorepositionals
注释将在启动时触发存储库bean的创建,但您仍然需要注册MongoDB连接并创建注入这些存储库的MongoTemplate
实例。看。以下是一个例子:
@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);
}
}
@配置
@PropertySource({“classpath:mongodb数据源.properties”})
公共类MongodbDataSourceConfig扩展了AbstractMongoConfiguration{
@自动连线环境;
@凌驾
公共字符串getDatabaseName(){
返回env.getRequiredProperty(“mongo.name”);
}
@凌驾
@豆子
public Mongo Mongo()引发异常{
ServerAddress ServerAddress=新服务器地址(env.getRequiredProperty(“mongo.host”);
列表凭据=新建ArrayList();
credentials.add(MongoCredential.createScramSha1Credential(
环境getRequiredProperty(“mongo.username”),
环境getRequiredProperty(“mongo.name”),
env.getRequiredProperty(“mongo.password”).toCharArray()
));
MongoClientOptions=新建MongoClientOptions.Builder()
.build();
返回新的MongoClient(服务器地址、凭据、选项);
}
}
name和username之间有什么区别?在spring 2.1中,类已重命名为AbstractMongoClient配置
@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);
}
}