gpt4 book ai didi

java - 有没有办法在配置有两个 mongo 数据库的 springboot 应用程序中使用 MongoOpeations

转载 作者:行者123 更新时间:2023-12-01 17:58:07 24 4
gpt4 key购买 nike

我已经使用 springboot 完成了一个示例应用程序,使用以下引用连接两个数据库 https://dzone.com/articles/multiple-mongodb-connectors-with-spring-boot

我可以使用扩展 MongoRepository 的存储库接口(interface)访问来自不同数据库的数据但我想使用 MongoOperations 访问数据,如下如何区分两个数据库

@RestController
@RequestMapping(value = "/sample")
public class SampleController {

private final PrimaryRepository primaryRepository;
private final SecondaryRepositor secondaryRepository;


@Autowired
MongoOperations mongoOps;

@Autowired
public SampleController(PrimaryRepository primaryRepository, SecondaryRepositor secondaryRepository) {
this.primaryRepository = primaryRepository;
this.secondaryRepository = secondaryRepository;
}

@RequestMapping(method = RequestMethod.GET)
public void sample() {
log.info("************************************************************");
log.info("Start printing mongo objects");
log.info("************************************************************");
primaryRepository.save(new PrimaryModel(null, "Primary database plain object"));

secondaryRepository.save(new SecondaryModel(null, "Secondary database plain object"));

List<PrimaryModel> primaries = primaryRepository.findAll();
for (PrimaryModel primary : primaries) {
log.info(primary.toString());
}

List<SecondaryModel> secondaries = secondaryRepository.findAll();
**List<SecondaryModel> second = mongoOps.findAll(SecondaryModel.class);**
log.info("RES: {}",second);
for (SecondaryModel secondary : secondaries) {
log.info(secondary.toString());
}

log.info("************************************************************");
log.info("Ended printing mongo objects");
log.info("************************************************************");

}
}```

最佳答案

您需要使用@Qualifier来获取所需的MongoDB实例。

@Autowired
@Qualifier("primaryMongoTemplate")
MongoOperations primaryMongoOps;

@Autowired
@Qualifier("secondaryMongoTemplate")
MongoOperations secondaryMongoOps;

注意:

您不需要public SampleController(PrimaryRepositoryprimaryRepository,SecondaryRepositor secondaryRepository),而是使用:

@RestController
@RequestMapping(value = "/sample")
public class SampleController {

@Autowired
PrimaryRepository primaryRepository;

@Autowired
SecondaryRepositor secondaryRepository;

@Autowired
@Qualifier("primaryMongoTemplate")
MongoOperations primaryMongoOps;

@Autowired
@Qualifier("secondaryMongoTemplate")
MongoOperations secondaryMongoOps;

@RequestMapping(method = RequestMethod.GET)
public void sample() {
...

关于java - 有没有办法在配置有两个 mongo 数据库的 springboot 应用程序中使用 MongoOpeations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60681771/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com