当前位置: 首页 > 面试题库 >

如何在禁用MongoDB但仍安装了MongoDB的情况下运行Spring?

蓟雪峰
2023-03-14
问题内容

我正在阅读有关Git的问题: 关于Java Spring引导的https://github.com/spring-projects/spring-
boot/issues/7589
,我正在尝试找到一种在启动时绕过崩溃的方法。

简短的版本是,如果您包含用于创建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是可选的,则您有几种选择。

如果要迁移现有应用程序,那么从一开始最简单的方法就是排除自动配置并自己创建基础结构。您所指出的null@Bean方法中返回的方式并不是很讨厌。相反,您可以拥有一些可以延迟创建客户端的服务,并且可以更新MongoDB的可选用法以通过该服务。无论如何都将创建服务,但仅在必要时创建基础基础结构。

另一种选择是使用配置文件。如果主要用例是MongoDB可用,则创建一个application- nomongo.properties(类似的东西),您将在其中使用spring.autoconfigure.exclude属性排除自动配置。当应用程序在没有mongo的情况下启动时,您可以启用nomongo配置文件,并且自动配置将退出。如果未启用它,那么Mongo它将由Spring
Boot创建。



 类似资料:
  • 我想参加一场比赛。Java一直是我编写游戏的工具,所以很自然我会想在这个游戏中使用它。问题是,它不能需要其他软件。我相信这包括Java。那么,有没有办法在某种exe文件中包含java?或者以其他方式包括它?资产不必包含在内,但总体大小必须小于1GB,因此我需要足够的空间来存放实际的游戏和资产。

  • 问题内容: 如果有人可以在这里提供一些见解,我将不胜感激。 我是MongoDB的新手,(相对)命令行的新手。 我在本地的MongoDB上成功运行了express / node.js应用程序,但是在重新启动计算机后,我尝试重新启动Mongo服务器,并且该服务器开始出现错误,无法启动。从那时起,我几次重新安装Mongo只是为了发现发生相同的错误。这是我收到的: 我错过了一步吗?我应该创建一个配置文件吗

  • 我试图使用spring-data来取代我们当前使用POJO进行mongodb文档的做法,在本例中,我使用了一些字段,而不是使用字段作为实体的Id。 然后我创建一个查询: 然后我使用mongodb驱动程序更新文档。 这样,我只更新,而不需要考虑对我来说毫无意义的ObjectId。

  • 问题内容: 我有和。 我的Linux Mint 12上有很多错误,我只是重新安装了它,所以我想再次从头开始安装所有内容。 这是我的错误之一。我在那里收到一个有趣的答案: 停止使用su和sudo运行virtualenv。 你需要以普通用户身份运行virtualenv。 你已经使用sudo创建了virtualenv,这就是为什么你会收到这些错误的原因。 那么如何不使用安装呢?我可以使用还是不使用?还是

  • 我正在开发一个spring启动应用程序并编写一些junit测试。 但我发现,当我运行任何测试时,tomcat也会启动,这使得这些测试非常缓慢,浪费了很多时间。 当我开发一个SpringMvc应用程序时,junit测试可以在不启动tomcat的情况下运行,这节省了很多时间。 所以,我想问它在那里无论如何要运行启动tomcat的springstart测试?

  • 由于我没有使用POJO类,所以当我发布记录时,它会创建一个名为“map”的集合&在其中插入记录。但是,预期是创建“CompanyDetails”集合并在其中存储数据。