概述
目录
Maven scope配置相关参数说明
spring-boot-devtools不推荐的配置
如题:这个问题是开发中引入生产环节的问题,如果程序存在Bug,那么spring-boot-devtools在抛出未处理的异常时会出现类似应用重启过程(修改一个类时,本地可以看到devtools在开发环境会关闭应用并重新启动),导致数据源关闭。这里提出两个生产中要非常注意的问题:
- try{}finlly{} 没有catch,会导致严重吞掉异常问题
- 项目中使用了spring-boot-devtools热部署插件导致异常情况下应用重启(此时Druid数据源关闭,无法再执行更新)
Maven scope配置相关参数说明
以下内容参考:https://maven.apache.org/pom.html
scope:此元素引用手头任务的类路径(编译和运行时,测试等),以及如何限制依赖项的可传递性。共有五个作用域:
- compile-这是默认范围,如果未指定则使用。编译依赖关系在所有类路径中均可用。此外,这些依赖项会传播到相关项目。
- provided-这很像编译,但是表明您希望JDK或容器在运行时提供它。它仅在编译和测试类路径上可用,并且不可传递。
- runtime-此作用域指示依赖关系不是编译所必需的,而是执行所必需的。它在运行时和测试类路径中,但不在编译类路径中。
- test-此范围表明该依赖关系对于正常使用该应用程序不是必需的,并且仅在测试编译和执行阶段可用。它不是可传递的。
- system-此范围类似于,
provided
除了必须提供显式包含它的JAR之外。该工件始终可用,并且不会在存储库中查找。
注意:弄清楚scope对我们使用maven绝对有好处。
spring-boot-devtools不推荐的配置
<!-- 本地热部署插件:慎用-容易导致应用重启数据丢失 -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>2.2.1.RELEASE</version>
<scope>runtime</scope>
<optional>true</optional>
</dependency>-->
通过对scope配置类型的了解我们知道,runtime会在程序执行过程中被执行,也就满足了devtools被修改或抛出异常时自动进行类的重载条件。
在实际生产环境中我们可以把scope设置为provided,这也就是我们为什么看到很多开源框架示例都使用provided域的原因。
最后
以上就是外向哑铃为你收集整理的SpringBoot 中使用spring-boot-devtools不可应用至生产环境的全部内容,希望文章能够帮你解决SpringBoot 中使用spring-boot-devtools不可应用至生产环境所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复