网站安全 扫描,校园网网站建设规划,网页设计大赛海报,中小企业解决方案在我们修改完项目代码后希望不用重启服务器就能把项目代码部署到服务器中(也就是说修改完项目代码后不用重启服务器修改后的项目代码就能生效)。
一、实现devtools原理
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-… 在我们修改完项目代码后希望不用重启服务器就能把项目代码部署到服务器中(也就是说修改完项目代码后不用重启服务器修改后的项目代码就能生效)。
一、实现devtools原理
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdoptionaltrue/optional
/dependencyspring-boot-devtools从名称就可以看出来是开发者工具包其主要的功能就是实现热加载。其实现原理就是两个ClassLoader一个负责加载那些不会经常改变的文件比如第三方jar包一旦引入项目之后这部分代码在调试过程中就处于不变的状态一个负责加载可能经常改变的类比如我们自己在项目中写的代码被称为restart ClassLoader。当有代码发生改变的时候重建一个restart ClassLoader原有的restart ClassLoader被丢掉。由于每次重新加载的内容较少所以速度比手动重启更快一些。
二、实现步骤
①、首先使用“ShiftCtrlAlt/” 选择 “Registry” 选中打勾 “compiler.automake.allow.when.app.running” 。 但是发现 compiler.automake.allow.when.app.running 并没有找到这个选项。 原来在 IDEA 2023 版本这个选项的配置改到设置-高级设置模块了。ctrlalts进入设置然后选择高级设置在Compiler下勾选 Allow auto-make to restart even if developed application is currently running。然后再进入 设置 BuildExecutionDeployment Compiler勾选 Build project automatically。 ②、添加这段代码后重启IDEA 然后再重启程序应用。 dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactIdscoperuntime/scopeoptionaltrue/optional/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationforktrue/fork !--dev-tools相关--skiptrue/skip !--否则模块打包时候会提示 unable to find main class--addResourcestrue/addResources/configuration/plugin/plugins/build
③、实在不行还可以尝试修改一下application.properties配置当然一般情况下不用走到这一步就可以完成热部署通常程序运行不生效的原因有两种
JDK编译版本和运行版本不统一自行学习一下IDEA环境下JDK配置浏览器缓存或者其他的缓存软件导致的问题
#热加载生效
spring.devtools.restart.enabledtrue
#额外新增的热加载目录
spring.devtools.restart.additional-paths src/main/java
#热加载排除目录
#spring.devtools.restart.exclude
④、最后建议你去浏览器插件商店安装一个插件叫做LiveReload。 Spring devtools默认会启动一个 Live Reload Server实例监听文件的变化。并实时与浏览器插件通信更新浏览器展示界面。就不用每次更改内容之后都点击浏览器刷新按钮了。
三、补充说明 最次如果还不行那就执行手动热加载我们直接入devtools坐标后将修改后的项目Build(CtrlF9)一下就可以把修改后的项目部署到服务器中了(目的和重启服务器一样了)
当然如果要关闭热部署的话可以尝试 devtools:restart:exclude: static/** , public/** ,config/application.ymlenabled false
# /** 表示此目录下的所有文件
# config/application.yml 已经具体到哪个目录下的哪个文件 或者在springboot启动类当中输System.setProperty(spring.devtools.restart.enabled,false);即可关闭热部署功能。
SpringBootApplication
public class Springboot12HotDisplayApplication {public static void main(String[] args) {System.setProperty(spring.devtools.restart.enabled,false);SpringApplication.run(Springboot12HotDisplayApplication.class, args);}}