在Spring Boot项目中,哪些功能的配置的正确性是项目成功启动的充分条件?

有个问题困惑自己好久了,在Spring Boot项目中,MySQL、Redis,Redisson的配置出错(比如写错了ip地址)就会导致项目启动失败,而Kafka、Zookeeper的配置有问题却不会导致项目启动失败。
①这是为什么呢?

②:还有哪些集成在Spring Boot中的功能(与本问题相关的)呢?它们的配置又是不是必须是正确的才能成功启动项目呢?比如Nacos?

本人才疏学浅,可能提问的问题本身就存在问题,希望大家多提建议并多多谅解。谢谢大家的解答。

阅读 2.3k
2 个回答

这个问题还是比较好的。

上一个答案说了一些原因。

我没有深入研究过,我认为归根结底的原因应该是取决于 spring boot 依赖的模块的源码的怎么写的,这些模块的代码编写者既可以选择在出错的时候抛出一个 spring boot 无法理解的异常导致整个项目无法启动,也可以选择只把异常打印出来然后继续往下走。这些仅仅是因为模块在作者的心里是一个什么样的地位。

这种情况你自己也能去尝试,比如写一个自己的 bean,在这个 bean 的构造函数里面抛出一个异常,那么程序就直接启动失败了,如果你这是打印一个 error 日志,那么肯定是正常启动。

redis启动没仔细看过源码,但是数据源,你ip配错了,可不代表你就不能启动的,和你使用的数据源有很大关系;如果你使用阿里的druid,你使用默认配置的场景下,启动失败的原因是会一直获取数据库连接,直到获取成功,所以启动就失败了(一直卡在获取连接那里);你使用推荐的HikariDataSource,就算ip写错了,也是可以正常启动的(我本地这是2.2.x,其他版本不敢说大话)
还有一个场景你也要考虑到,就是强制所有bean都是懒加载的场景,这种比较特殊,即使你配置错了,但是启动过程中你压根就没用到它,那也是可以启动的;
这种所谓的必要条件,一般是依赖的bean能正常注册到容器,即使你这个bean有点问题,对于启动过程中如果未使用到相关有问题的部分,也是没问题的;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏