Mongodb 当存在多个数据库时,如何在MongoRepository中指定using mongo数据库
在SpringBoot应用程序中,我在yml文件中配置了两个数据库。现在我想指定在每个MongoRepository中使用哪个数据库。这可能吗?如果是,怎么做?提前谢谢 yml文件:Mongodb 当存在多个数据库时,如何在MongoRepository中指定using mongo数据库,mongodb,spring-boot,spring-data-mongodb,Mongodb,Spring Boot,Spring Data Mongodb,在SpringBoot应用程序中,我在yml文件中配置了两个数据库。现在我想指定在每个MongoRepository中使用哪个数据库。这可能吗?如果是,怎么做?提前谢谢 yml文件: spring: data: mongodb: first: host: 127.0.0.1 port: 27017 database: db_admin rest: base-path: /admin second: host: 127.0.0.1 port:
spring:
data:
mongodb:
first:
host: 127.0.0.1
port: 27017
database: db_admin
rest:
base-path: /admin
second:
host: 127.0.0.1
port: 27018
database: `user_forms`
rest:
base-path: /users
因此,在User MongoRepository中,我想使用User\u forms
数据库
用户MongoRepository:
@RepositoryRestResource(collectionResourceRel = "users",path = "users")
public interface UserRepository extends MongoRepository<User, String> {
List<User> findByUserId(String id);
}
@RepositoryRestResource(collectionResourceRel=“users”,path=“users”)
公共接口UserRepository扩展了MongoRepository{
列表findByUserId(字符串id);
}
Spring Boot auto configuration提供了一个默认的MongoTemplate,以方便生成MongoDB存储库
然而,如果您想使用多MongoDB数据库,则需要
@EnableMongoRepositories(
basePackages = "com.the.base.package.name.of.admin.repositories",
mongoTemplateRef = "adminTemplateBeanName")
@Configuration
public class AdminMongoConfig {
@Bean
public MongoTemplate adminTemplateBeanName() {
//...
}
}
基本上解释了我所说的几乎所有观点。因此,我的猜测是,您可能有一个误解,即MongoTemplate与MongoRepository无关,事实并非如此 Spring Boot auto configuration提供了一个默认的MongoTemplate,以方便生成MongoDB存储库 然而,如果您想使用多MongoDB数据库,则需要
@EnableMongoRepositories(
basePackages = "com.the.base.package.name.of.admin.repositories",
mongoTemplateRef = "adminTemplateBeanName")
@Configuration
public class AdminMongoConfig {
@Bean
public MongoTemplate adminTemplateBeanName() {
//...
}
}
基本上解释了我所说的几乎所有观点。因此,我的猜测是,您可能有一个误解,即MongoTemplate与MongoRepository无关,事实并非如此 尽管已将问题标记为重复问题,但仍添加答案,因为对于
MongoRepository
是否使用MongoTemplate
存在一些混淆
注入MongoRepository时,它由SimpleMongoRepository
类的实例代理。它有一个领域
private final MongoOperations mongoOperations;
MongoOperations
是一个接口,MongoTemplate
是它的实现
现在的问题是,在Spring引导应用程序中,这个默认mongo模板来自哪里。
查看MongoDataAutoConfiguration
@Bean
@ConditionalOnMissingBean
public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory,
MongoConverter converter) {
return new MongoTemplate(mongoDbFactory, converter);
}
因此,我仍然声称它是的副本:尽管已将问题标记为副本,但仍添加了一个答案,因为对于
MongoRepository
是否使用MongoTemplate
存在一些混淆
注入MongoRepository时,它由SimpleMongoRepository
类的实例代理。它有一个领域
private final MongoOperations mongoOperations;
MongoOperations
是一个接口,MongoTemplate
是它的实现
现在的问题是,在Spring引导应用程序中,这个默认mongo模板来自哪里。
查看MongoDataAutoConfiguration
@Bean
@ConditionalOnMissingBean
public MongoTemplate mongoTemplate(MongoDbFactory mongoDbFactory,
MongoConverter converter) {
return new MongoTemplate(mongoDbFactory, converter);
}
因此,我仍然声称它是它的副本:使用mongoTemplate方法的可能副本,我使用了MongoRepository。因此,它不是使用mongoTemplate方法的可能重复,我使用了MongoRepository。所以它不是复制品