Spring boot SpringBoot开发工具如何检测应用程序';什么是运行环境?

Spring boot SpringBoot开发工具如何检测应用程序';什么是运行环境?,spring-boot,spring-boot-devtools,Spring Boot,Spring Boot Devtools,在我的appllicaiton中,我添加了SpringBoot开发工具来提高开发速度 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> or

在我的appllicaiton中,我添加了SpringBoot开发工具来提高开发速度

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

org.springframework.boot
它说

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


该应用程序是在生产环境中从java-jar启动的。但是,在开发过程中,Intellij idea是如何实现的呢?

它实际上非常简单,但并不明显。当类路径中包含spring引导devtools时,devtools被启用

默认情况下,SpringBootMaven插件在构建最终jar文件时不包括SpringBootDevTools,因此它被禁用

:

默认情况下,Devtools会自动排除(您可以控制它) 使用excludeDevtools属性)。为了让它和你一起工作 在war打包中,
spring boot devtools
依赖项必须设置为 可选或具有提供的范围

如果您从IDE运行spring应用程序,或者运行
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

简单的IDE运行的应用程序爆炸了。确定一个随机资源是一个文件系统路径还是一个不透明路径是一个很简单的任务。您能再解释一下吗?如果我从IDE运行spring应用程序,它是在幕后使用java-jar吗?在您的IDE中,它不会在spring boot maven插件构建的最终jar文件上使用java-jar。就像蜘蛛鲍里斯说的,它以爆炸模式运行。