`
234390216
  • 浏览: 10232983 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462624
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775516
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398358
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:395022
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679983
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530892
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183946
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467927
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151396
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68153
社区版块
存档分类
最新评论

Spring Boot(20)——devtools介绍

阅读更多

Spring Boot devtools介绍

Spring Boot提供了一个spring-boot-devtools jar包,提供了一些方便程序开发的功能,主要是监控程序的变化,然后进行自动重新启动。使用spring-boot-devtools需要在pom.xml中添加如下依赖项,同时需要设置<optional>true</optional>spring-boot-devtools默认将只在开发环境生效,通过Spring Boot插件打包时默认是不会包含spring-boot-devtools

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

默认情况下,当devtools检测到classpath下有文件内容变更时,它会对当前Spring Boot应用进行重新启动。但它的重新启动并不是完整的重启整个应用。它的应用的重启是基于两个不同的ClassLoader进行的,根ClassLoader将负责加载第三方jar包中的内容,而当前应用中的Class、配置文件等资源则使用一个可重新加载的ClassLoader进行加载,叫RestartClassLoader。当检测到有内容变更时,Spring Boot会弃用原来的RestartClassLoader,然后重新创建一个新的RestartClassLoader来加载当前应用的Class等资源。这种设计可以让程序快速的进行重启,因为这个时候第三方jar包中的资源已经在第一次启动的时候进行加载了,自动重启的时候已经不再加载它了,而且在开发的时候,希望改动后立马生效的通常也是应用中自己定义的Class及其它资源。但如果你期望第三方jar文件的变动也会触发devtools进行自动重启,则可以创建META-INF/spring-devtools.properties,在文件中通过restart.include.xxx指定需要自动重启的jar,通过restart.exclude.xxx指定不需要自动重启的jar,属性值采用正则表达式匹配。所有的属性名必须是唯一的,它们的前缀必须是restart.include.restart.exclude.,至于后面的内容是无所谓的。比如下面的配置就指定了所有的以mycorp-common-打头的jar包不参与自动重启,而所有的以mycorp-myproj-打头的jar包需要参与自动重启。

restart.exclude.companycommonlibs=/mycorp-common-[\\w-]+\.jar
restart.include.projectcommon=/mycorp-myproj-[\\w-]+\.jar

默认情况下,/META-INF/maven, /META-INF/resources, /resources, /static, /public, 和 /templates下面的资源的变化不会触发自动重启。如果用户期望其它资源文件的变更也不会进行自动重启,则可以在application.properties文件中通过spring.devtools.restart.exclude属性进行指定,比如不想在更改application.properties文件的时候进行自动重启,可以进行如下配置。

spring.devtools.restart.exclude=application.properties

如果想监听非Classpath路径下的文件的变更进行自动重启,则可以通过spring.devtools.restart.additional-paths属性进行指定。

如果你想禁用devtools的自动重启功能,则可以指定spring.devtools.restart.enabled=false,也可以在Spring Boot启动的main程序中,在调用SpringApplication.run(..)之前指定系统属性spring.devtools.restart.enabled为false。

@SpringBootApplication
public class Application {

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

}

如果你不想在改变ClassPath路径下的任何文件后立马就进行自动重启,而是希望在更改了很多文件后,在更改了一个特殊的文件后自动触发自动重启,则可以通过spring.devtools.restart.trigger-file属性指定触发自动重启的文件,这样当该文件的内容发生了变更后将会触发自动重启。比如下面的配置就表示当更改了application.properties文件的内容时将触发自动重启。

spring.devtools.restart.trigger-file=application.properties

上面的针对devtools的配置都是基于单个项目的配置,如果希望上述配置能够针对所有的项目都生效,则可以在HOME目录下新建一个.spring-boot-devtools.properties文件(注意文件名是以点开头的),在其中定义那些配置属性。

参考文档

https://docs.spring.io/spring-boot/docs/2.0.3.RELEASE/reference/html/using-boot-devtools.html

 

0
0
分享到:
评论

相关推荐

    springdevtools.rar

    在IntelliJ IDEA这样的集成开发环境中,实现Spring Boot项目的热部署,通常会借助于Spring提供的一个特殊模块——Spring Boot DevTools(开发人员工具)。Spring DevTools的设计目标就是为了解决开发中的迭代问题,...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 10.2.2 war 形式 417 10.3 云部署——基于Docker 的部署 419 10.3.1 Dockerfile 419 10.3.2 安装Docker 421 10.3.3 项目目录及文件 421 ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part1

    10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 10.2.2 war 形式 417 10.3 云部署——基于Docker 的部署 419 10.3.1 Dockerfile 419 10.3.2 安装Docker 421 10.3.3 项目目录及文件 421 ...

    微服务架构面试专题系列:Dubbo+Spring Boot+Spring Cloud.zip

    5. **Spring Boot DevTools**:介绍开发工具包,支持热部署和调试工具,提升开发效率。 最后,Spring Cloud作为一套微服务解决方案,它结合了Spring Boot的便捷性并提供了服务治理的一整套工具。面试中可能涉及: ...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part2

    10.1.4 spring-boot-devtools 413 10.2 常规部署 413 10.2.1 jar 形式 413 10.2.2 war 形式 417 10.3 云部署——基于Docker 的部署 419 10.3.1 Dockerfile 419 10.3.2 安装Docker 421 10.3.3 项目目录及文件 421 ...

    SpringBoot 源码解析——源码模块功能分析.docx

    * spring-boot-devtools:提供了开发工具功能,能够帮助开发者快速开发和调试 SpringBoot 应用。 * spring-boot-docs:提供了文档生成功能,能够生成 SpringBoot 应用的文档。 * spring-boot-parent:提供了父模块...

    尚硅谷springboot核心技术笔记

    接下来,笔记详细讲解了Spring Boot的主配置文件——application.properties或application.yml。这些配置文件用于定制自动配置行为,调整应用的行为,如端口设置、数据库连接信息等。此外,还介绍了如何通过@...

    SpringBoot 源码解析——源码各模块代码统计.docx

    12. **spring-boot-devtools**: 开发者工具模块,包含10912行代码,提供了如热部署、实时刷新等功能,极大地提高了开发效率。 13. **spring-boot**: 最后是Spring Boot的核心模块,包含61107行代码,定义了启动器、...

    springboot相关面试题汇总详解

    1. 使用 spring-boot-devtools热部署:在项目的 pom 文件中添加依赖,然后使用 shift+ctrl+alt+"/" 快捷键选择"Registry",然后勾选 compiler.automake.allow.when.app.running。 2. 使用 Spring Loaded 方式:在...

    社交网站后端项目开发日记(一)(csdn)————程序.pdf

    项目的pom.xml文件中包含了初始依赖,包括spring-boot-starter-aop、spring-boot-starter-thymeleaf、spring-boot-starter-web、spring-boot-devtools、spring-boot-starter-test等。 四、SpringBoot基础知识 ...

    spring总结

    13. **Spring Boot DevTools**:开发者工具,如热部署、实时代码更改等。 14. **Spring Data**:简化数据访问,支持各种数据库,如JPA、MongoDB等。 15. **Spring WebSocket**:提供WebSocket支持,实现双向通信。...

    SpringBoot 55道面试题和答案.docx

    SpringBoot 还有一个重要的开发工具模块——DevTools(开发工具),它支持热部署,即在代码保存后,嵌入式Tomcat会自动重启应用,使得开发者无需手动重启服务器即可看到代码变更的效果。DevTools 在生产环境中默认是...

    springboot+mybatis+jta+atomikos解决多数据源事务问题.pdf

    文档中提到了项目使用了`spring-boot-starter-web`、`spring-boot-devtools`、`lombok`、`spring-boot-starter-test`、`druid-spring-boot-starter`以及`mybatis-spring-boot-starter`依赖,这些是构建Spring Boot...

    SpringBoot 源码解析——源码模块依赖分析.docx

    - 当 `spring-boot-devtools` 依赖在类路径中时,SpringBoot 会开启这些特性,提高开发效率。 5. **嵌入式服务器**: - SpringBoot 支持多种嵌入式服务器,如 Tomcat、Jetty 和 Undertow,它们可以直接运行在 JAR...

    RabbitMQ与SpringBoot整合.docx

    接下来详细介绍如何在Spring Boot项目中整合RabbitMQ,以实现两个应用之间的消息传递。 1. **环境搭建**: - 创建两个Maven项目,分别作为发送方(Sender)和接收方(Receiver),以模拟分布式环境中不同服务间的通信...

    springboot-buildingblocks:弹簧靴积木

    Spring Boot DevTools是一组用于开发环境的工具,它可以实现热部署,即代码修改后自动重启应用,大大提高了开发效率。此外,它还提供了实时文件更改跟踪、浏览器刷新等功能。 总结,Spring Boot通过其丰富的积木式...

    Java之——类热加载

    - Spring Boot 提供了DevTools模块,它可以在源代码变更后自动重新编译并加载,实现快速迭代开发。 - JRebel 是一款商业的热部署工具,能够实时更新代码,无需重启应用。 7. 类热加载注意事项 - 热加载可能导致...

    SpringBootBlog2nd

    《SpringBootBlog2nd——深度探索Spring Boot的二次开发实践》 在当今的软件开发领域,Spring Boot已经成为了Java企业级应用的首选框架,它的出现极大地简化了微服务的构建和部署过程。本项目"SpringBootBlog2nd"是...

    SpringWebSocket Demo

    本文将深入探讨如何在Spring框架下集成WebSocket,解决常见的404访问问题,并提供一个实用的项目示例——"SpringWebSocket Demo"。 ### 1. WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议,为...

Global site tag (gtag.js) - Google Analytics