spring boot mongodb 多数据库
Posted
技术标签:
【中文标题】spring boot mongodb 多数据库【英文标题】:spring boot mongo multiple database 【发布时间】:2018-02-05 13:14:12 【问题描述】:如何配置 application.properties 以使用多个 mongoTemplate
我当前的配置。
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
spring.data.mongodb.database=user
我的代码:
public class UserRepository
@Autowired
private MongoTemplate mongoTemplate;
public UserInfo getUserInfo()
//i can get user information from user database
mongoTemplate.findAll();
我想从其他数据库中获取数据,例如通用数据库。例如
public class UserRepository
@Autowired
private MongoTemplate mongoUserTemplate;
@Autowired
private MongoTemplate mongoCommonTemplate;
public UserInfo getUserInfo()
//i can get user information from user database
mongoUserTemplate.findAll();
//how can i configure application.properties to use
//mongoCommonTemplate...
mongoCommonTemplate.findAll();
【问题讨论】:
【参考方案1】:有一个 Qualifier
注释,您可以使用它来为要使用的 bean 提供名称。
因此,当您创建 MongoTemplate 对象时,请给它们不同的名称。然后在你想使用不同版本的地方添加一个限定符注解,提供你想要的 bean 的名称。
例如:
配置类:
@Configuration
public class AppConfig
public @Bean Mongo mongo() throws Exception
return new Mongo("localhost");
public @Bean MongoTemplate userTemplate() throws Exception
return new MongoTemplate(mongo(), "user");
public @Bean MongoTemplate commonTemplate() throws Exception
return new MongoTemplate(mongo(), "common");
要自动装配模板的类:
@Autowired
@Qualifier("userTemplate")
private MongoTemplate userTemplate;
@Autowired
@Qualifier("commonTemplate")
private MongoTemplate commonTemplate;
**如果 bean 的名称与您自动装配到的字段的名称相匹配,那么我认为您甚至可以不使用 Qualifier
注释。 IE。如果您在配置类中调用 bean userTemplate
,则可以将其自动装配到一个名为 userTemplate
的字段中,而无需 @Qualifier
注释
【讨论】:
以上是关于spring boot mongodb 多数据库的主要内容,如果未能解决你的问题,请参考以下文章
开源 Spring Boot 中 Mongodb 多数据源扩展框架
Spring Boot项目中的MongoDB一对多和多对一关系