SpringBoot 开发工具如何检测应用程序的运行环境?



在我的应用程序中,我添加了 SpringBoot 开发工具以提高开发速度。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional>
</dependency>

在其官方文件中,它说

运行完全打包的应用程序时,开发人员工具会自动禁用。如果你的应用程序是从java -jar启动的,或者如果它是一个特殊的类加载器启动的,那么它被认为是一个"生产应用程序"。

该应用程序从生产中的java -jar启动。但是,在开发过程中,它是如何在 Intellij 理念中被抨击的呢?

这实际上很简单,但并不明显。当 spring-boot-devtools 包含在类路径中时,则启用 devtools。

默认情况下,spring-boot-maven-plugin 在构建最终的 jar 文件时会排除 spring-boot-devtools,因此它是禁用的。

Spring Boot Maven 插件文档:

默认情况下,Devtools 会自动排除(您可以控制 使用 excludeDevtools 属性)。为了使它工作 战争包装,spring-boot-devtools依赖必须设置为 可选或具有提供的范围。

如果从 IDE 运行 Spring 应用程序或运行 spring-boot-devtools mvn spring-boot:run则 spring-boot-devtools 位于类路径中。

当 spring-boot-devtools 运行时,你会得到一个类似于这样的日志:

.e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable

最新更新