SpringBoot_7开发者工具

返回目录

开发者工具


Spring Boot包含一组额外的工具,可以使应用程序开发体验更加愉快。该spring-boot-devtools模块可以包含在任何项目中,以提供额外的开发时间功能。要包含devtools支持,请将模块依赖项添加到您的构建中
Maven

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

运行完全打包的应用程序时会自动禁用开发人员工具。如果您的应用程序是从java -jar特殊的类加载器启动或启动的,那么它将被视为“生产应用程序”。如果这不适用于您(即,如果您从容器运行应用程序),请考虑排除devtools或设置-Dspring.devtools.restart.enabled=false系统属性。

默认属性


Spring Boot支持使用缓存来提高性能。例如Spring MVC可以在提供静态资源时为响应添加HTTP缓存标头。

如果您希望记录所有请求详细信息(包括可能的敏感信息),则可以打开 spring.http.log-request-details配置属性。

如果你不想被应用默认属性可以在application.properties文件中设置spring.devtools.add-properties为false

自动重启


spring-boot-devtools只要类路径上的文件发生更改,就会自动重新启动应用程序 在IDE中工作时,这可能是一个有用的功能,因为它为代码更改提供了非常快速的反馈循环。默认情况下,将监视类路径上指向文件夹的任何条目的更改。请注意,某些资源(如静态资源和视图模板)无需重新启动应用程序。

触发重启


由于DevTools监视类路径资源,因此触发重新启动的唯一方法是更新类路径。导致更新类路径的方式取决于您使用的IDE。在Eclipse中,保存修改后的文件会导致更新类路径并触发重新启动。在IntelliJ IDEA中,构建项目(Build -> Build Project)具有相同的效果。

重新启动和冷启动


Spring Boot提供的重启技术使用两个类加载器。不更改的类(例如,来自第三方jar的类)将加载到基类加载器中。您正在积极开发的类将加载到重启类加载器中。重新启动应用程序时,将重新启动重启类加载器并创建一个新的类加载器。这种方法意味着应用程序重新启动通常比“冷启动”快得多,因为基本类加载器已经可用并已填充。

更改日志记录


默认情况下,每次应用程序重新启动时,都会记录一个显示更改记录的报告。该报告显示了在进行更改(例如添加或删除Bean以及设置配置属性)时应用程序自动配置的更改。

要禁用报告的日志记录,请设置以下属性:
spring.devtools.restart.log-condition-evaluation-delta=false

排除资源


某些资源在更改时不一定需要触发重启。例如,可以直接编辑Thymeleaf模板。默认情况下,在改变资源
/META-INF/maven,/META-INF/resources,/resources,/static,/public,或 /templates不会触发重启但会引发 现场重装。如果要自定义这些排除项,可以使用spring.devtools.restart.exclude属性。例如,要仅排除/static,/public您将设置以下属性:
spring.devtools.restart.exclude=static/**,public/**

监视其他路径


当您对不在类路径中的文件进行更改时,您可能希望重新启动或重新加载应用程序。为此,请使用该 spring.devtools.restart.additional-paths属性配置其他路径以监视更改。您可以使用前面描述的spring.devtools.restart.exclude属性 来控制其他路径下的更改是触发完全重新启动还是 实时重新加载。

禁用重启


如果您不想使用重新启动功能,可以使用该spring.devtools.restart.enabled属性将其禁用 。在大多数情况下,您可以在您的application.properties文件中设置此属性(这样做仍会初始化重新启动的类加载器,但它不会监视文件更改)。

如果需要完全禁用重新启动支持(例如,因为它不能与特定库一起使用),则需要在调用之前将spring.devtools.restart.enabled System 属性设置为,如以下示例所示:

public static void main(String[] args) {
    System.setProperty("spring.devtools.restart.enabled", "false");
    SpringApplication.run(MyApp.class, args);
}

LiveReload


该spring-boot-devtools模块包括一个嵌入式LiveReload服务器,可用于在更改资源时触发浏览器刷新。LiveReload扩展程序可从livereload.com获取免费用于Chrome,Firefox和Safari 浏览器。

如果您不想在应用程序运行时启动LiveReload服务器,则可以将spring.devtools.livereload.enabled属性设置为false。

您一次只能运行一个LiveReload服务器。在启动应用程序之前,请确保没有其他LiveReload服务器正在运行。如果从IDE启动多个应用程序,则只有第一个具有LiveReload支持。

其他方式


  • 使用触发文件
  • 自定义Restart Classloader
  • 已知限制(重新启动功能不起作用)
  • 全局设置
  • 远程应用程序
  • 运行远程客户端应用程序
  • 远程更新
    以上内容每一项都是一个不常用的知识点
    返回目录
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容