SpringBoot学习历程(三):Devtools热部署

mac2022-06-30  18

SpringBoot学习历程(三):Devtools热部署

前言1. 引入Spring-Boot-devtools2. 热部署生效3. springboot提供的属性4. jrebel插件

前言

本人github仓库地址:https://github.com/RabbitsInTheGrass/springBoot-Learning 所谓的热部署就是在你修改了后端代码后不需要手动重启,工具会帮你快速的自动重启是修改生效。其深层原理是使用了两个ClassLoader,一个Classloader加载那些不会改变的类(第三方Jar包),另一个ClassLoader加载会更改的类,称为restart ClassLoader,这样在有代码更改的时候,原来的restart ClassLoader 被丢弃,重新创建一个restart ClassLoader,由于需要加载的类相比较少,所以实现了较快的重启时间。

1. 引入Spring-Boot-devtools

<!-- 引入热部署依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>true</scope> <optional>true</optional> </dependency> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <!-- 没有该配置,devtools 不生效 --> <fork>true</fork> </configuration> </plugin> </plugins> </build>

devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机)。 注意: 《fork》标签的作用不太确定,有说是:避免 devtools 传递性的被应用到项目中其他的 module。

2. 热部署生效

在配置文件application.yml中添加 : spring: devtools: restart: enabled: true #设置开启热部署 freemarker: cache: false #页面不加载缓存,修改即时生效 在File >>> Settings >>> Build,Execution,Deployment >>> Compiler 中找到Build project automatically 并勾选。 用Ctrl+Shift+A 快捷键打开 Registry,点击之后找到"compiler.automake.allow.when.app.running",勾选,【Close】关闭。重启IDEA即可。

3. springboot提供的属性

---------------------------------------- #开发人员属性 #----- ----------------------------------- #DEVTOOLS(DevToolsProperties) spring.devtools.add-properties = true #是否启用开发属性默认值。 spring.devtools.livereload.enabled = true #是否启用与livereload.com兼容的服务器。 spring.devtools.livereload.port = 35729 #服务器端口。 spring.devtools.restart.additional-exclude = #应当从触发完全重启中排除的其他模式。 spring.devtools.restart.additional-paths = #监视更改的其他路径。 spring.devtools.restart.enabled = true #是否启用自动重启。 spring.devtools.restart.exclude= Tests.class spring.devtools.restart.log-condition-evaluation-delta = true #是否在重新启动时记录条件评估增量。 spring.devtools.restart.poll-interval = 1s #等待两次轮询类路径更改之间的时间。 spring.devtools.restart.quiet-period = 400ms #触发重新启动之前,无需对类路径进行任何更改所需的安静时间。 spring.devtools.restart.trigger-file =#更改后触发重新启动检查的特定文件的名称。如果未指定,则任何类路径文件更改都会触发重新启动。 #REMOTE DEVTOOLS(RemoteDevToolsProperties) spring.devtools.remote.context-path = /~~ spring-boot!〜#用于处理远程连接的上下文路径。 spring.devtools.remote.proxy.host = #用于连接到远程应用程序的代理主机。 spring.devtools.remote.proxy.port = #用于连接到远程应用程序的代理的端口。 spring.devtools.remote.restart.enabled = true #是否启用远程重启。 spring.devtools.remote.secret = #建立连接所需的共享机密(启用远程支持所必需)。 spring.devtools.remote.secret头名= X-AUTH-TOKEN #用于传输共享密钥的HTTP标头。

4. jrebel插件

livereload ,jrebel之类的插件也可以,但是个人感觉没有devtools强大。

最新回复(0)