我正在阅读这个 Git 问题: https://github.com/spring-projects/spring-boot/issues/7589 关于 Java Spring boot,我正试图找出一种方法来绕过启动时的崩溃。
简短的版本是,如果您包含创建 mongo 客户端的代码:
@Bean
public MongoOperations mongoOperations() {
try {
//This runs an operation which uses my credentials to login to the db
return new MongoTemplate(mongoDbFactory());
} catch (Exception e){
e.printStackTrace();
return null;
}
}
并且 MongoDB 正在运行,它将连接并且没有任何问题,但如果 MongoDB 未正在运行,Spring 将重试并在再次失败后崩溃并停止所有启动序列。
我的问题是:除了注释掉引用它的所有代码之外,有没有办法绕过这个初始崩溃/检查正在启动和运行的数据库?我可以在底层捕获异常并让它通过吗?
最佳答案
如果您的应用程序以 MongoDB 可选的方式运行,您有多种选择。
如果您要迁移现有应用程序,最简单的方法是从一开始就迁移到 exclude the auto-configuration并自己创建基础设施。不是您所指出的从 @Bean
方法返回 null
的方式非常讨厌。相反,您可以拥有一些可以延迟创建客户端的服务,并且您可以更新 MongoDB 的可选用法以通过该服务。无论如何都会创建服务,但只会在必要时创建底层基础设施。
另一种选择是使用配置文件。如果主要用例是 MongoDB 可用,则创建一个 application-nomongo.properties
(类似的东西),您可以在其中使用 spring.autoconfigure.exclude排除自动配置
属性。当应用程序在没有 mongo 的情况下启动时,您可以启用 nomongo
配置文件,自动配置将退避。未启用时,Mongo
bean 将由 Spring Boot 创建。
关于java - 如何在禁用 MongoDB 但仍安装的情况下运行 Spring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51312291/