SpringBoot项目的热部署 idea

热部署可以使修改代码后,无须重启服务器,就可以加载更改的代码。

第1种:修改服务器配置,使得IDEA窗口失去焦点时,更新类和资源

菜单Run->EditConfiguration,然后配置指定的服务器下,右侧server标签下on frame deactivation=Update classes and resource.

缺点:基于JVM提供的热加载仅支持方法块代码修改,只有debug模式下,并且是在idea失去焦点时才会触发热加载,相对加载速度缓慢。

第2种:使用springloaded jar包

启动应用时添加JVM启动参数:

-javaagent:/home/lkqm/.m2/repository/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify

支持成员级别的修改,支持对枚举的修改。

第3种:使用spring-boot-devtools提供的开发者工具

在pom中加入依赖

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

将依赖标记为optional可以防止将devtools依赖传递到其他模块中。

第4种:使用Jrebel插件

最后3种方法是基于类加载机制实现加载的,因此你修改完代码后必须重新编译当前代码,才能触发热部署,Eclipse默认就支持自动编译,而在IDea中默认是关闭的,设置以下两项设置开启:

 

(1)“File"->"Settings"->"Build, Execution, Deplyment"->"Compiler"中勾选“build project automatically”

(2)组合键:shift+ctrl+alt+/: regsitry->勾选compiler.automake.allow.when.app.running.

devtools属性默认值

Spring Boot支持的一些库中会使用缓存来提高性能,例如模板引擎将编译后的模板,以避免重复解析模板文件。此外,Spring MVC可以在静态资源响应中添加HTTP缓存头。

虽然缓存在生产中非常有益,但它在开发过程中可能会产生反效果,它会阻止你看到刚刚在应用程序中进行的更改。因此,spring-boot-devtools将默认禁用这些缓存选项。

缓存选项通常在application.properties文件中配置,例如,Thymeleaf提供了spring.thymeleaf.cache属性。spring-boot-devtools模块不需要手动设置这些属性,而是自动应用合理的开发时配置。

devtools自动重启

spring-boot-devtools会在类路径上的文件发生更改时自动重启。默认情况下会监视类路径上的所有变动,但请注意,某些资源(如静态资源和视图模板)不需要重启应用程序。

1.排除资源

某些资源在更尽管时不一定需要触发重启。例如,可以直接编辑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-exclude 属性。

2.监控额外的路径

当你对不在类路径中的文件进行更改时,可能需要重启或重新加载应用程序。为此,请使用spring.dev.tools.restart.additional-paths属性来配置监视其他路径的更改。

3.禁用重启

可以使用spring.devtools.restart.enabled属性来禁用它。

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值